本帖最后由 tll 于 2013-7-20 08:20 编辑
大家都知道,A10只有2个PWM,并且cb只引出1个,cb具有96个Pin口,但大多数都被占用或者是不能当GPIO口用的
于是准备连接Arduino Mega 2560 r3,它具有12个支持PWM的Pin口,3个串口(如果没记错),以及N(接近60)个输入/输出模拟Pin口,比cb的Pin口强大很多
我准备用USB转TTL线同时为Arduino供电和通信,因此只需要占用1个口
我用的是CbOS 预发布版,内置PL2303(我USB转TTL线的主控)驱动,大家可以使用cb官方的ubuntu 1.1系统,同样有的
先用Arduino IDE烧上程序:
For Mega:- String comdata = "";
- const int l = 12;
- int numdata[l] = {0}, PWMPin[l] = {2,3,4,5,6,7,8,9,10,11,12,13}, mark = 0;
- void setup()
- {
- for(int i = 0; i < l; i++) pinMode(PWMPin[i], OUTPUT);
- Serial.begin(9600);
- }
- void loop()
- {
- int j = 0;
- while (Serial.available() > 0)
- {
- comdata += char(Serial.read());
- delay(2);
- mark = 1;
- }
- if(mark == 1)
- {
- //Serial.println(comdata);
- //Serial.println(comdata.length());
- for(int i = 0; i < comdata.length() ; i++)
- {
- if(comdata[i] == ',')
- {
- j++;
- }
- else
- {
- numdata[j] = numdata[j] * 10 + (comdata[i] - '0');
- }
- }
- comdata = String("");
- for(int i = 0; i < l; i++)
- {
- //Serial.print("Pin ");
- //Serial.print(PWMPin[i]);
- //Serial.print(" = ");
- //Serial.println(numdata[i]);
- analogWrite(PWMPin[i], numdata[i]);
- numdata[i] = 0;
- }
- Serial.println("Success");
- mark = 0;
- }
- }
复制代码 For UNO,Net:- String comdata = "";
- int numdata[6] = {0}, PWMPin[6] = {3, 5, 6, 9, 10, 11}, mark = 0;
- void setup()
- {
- for(int i = 0; i < 6; i++) pinMode(PWMPin[i], OUTPUT);
- Serial.begin(9600);
- }
- void loop()
- {
- int j = 0;
- while (Serial.available() > 0)
- {
- comdata += char(Serial.read());
- delay(2);
- mark = 1;
- }
- if(mark == 1)
- {
- Serial.println(comdata);
- Serial.println(comdata.length());
- for(int i = 0; i < comdata.length() ; i++)
- {
- if(comdata[i] == ',')
- {
- j++;
- }
- else
- {
- numdata[j] = numdata[j] * 10 + (comdata[i] - '0');
- }
- }
- comdata = String("");
- for(int i = 0; i < 6; i++)
- {
- Serial.print("Pin ");
- Serial.print(PWMPin[i]);
- Serial.print(" = ");
- Serial.println(numdata[i]);
- analogWrite(PWMPin[i], numdata[i]);
- numdata[i] = 0;
- }
- mark = 0;
- }
- }
复制代码 再在各个PWM口与GND之间接1个LED,这个不用说了吧
再把USB转TTL线接上Arduino:
转接线-》Arduino
RX-》TX
TX-》RX
5V-》VIN
GND-》GND
好,再把usb端接上cb- insmod ./modules/`uname -r`/kernel/drivers/usb/serial/pl2303.ko
- ls /dev
复制代码 看看有没有ttyUSB0,如果没有,检查一下驱动是否被加载(1.1系统貌似不需要加载)
接着
For mega:- echo "200,200,200,200,200,200,200,200,200,200,200,200" > /dev/ttyUSB0
复制代码 For uno,net:- echo "200,200,200,200,200,200" > /dev/ttyUSB0
复制代码 灯是不是亮了?而又没有比全开亮?
这就说明PWM能用了
调整上面的数值可以更改亮度(范围0~255)
|