本帖最后由 弘毅 于 2012-12-31 11:27 编辑
[翻译]官方范例例程Analog\AnalogOutputSerial
实验器材
1. Mango Ocrobot 控制板一块(Ardunio 兼容控制器)
2. USB下载线一条
3. 光敏电阻 5528一个
4. 1K电阻一个
5. IN5819二极管一个
6. 104瓷片电容二个
7. 排针3P 二个
8. 排线二条 3P
9. 发光二极管一个
10. 220欧姆电阻一个
实验效果:随着光线的增强模拟数值上升,同时发光二极管的亮度也随之变亮.
实验程序 Arduino 官方范例例程Analog\Analogoutputserial.ino
以下是Ardunio代码: - /*
- 翻译:tom
- 时间:2012年12月31日
- IDE版本号:1.01
- 发表地址:www.geek-workshop.com
- 翻译说明: 根据arduino自带的范例进行翻译,可能根据实际的需要略作修改
- */
- /*
- 模拟输入,模拟输出,串口输出
- 在模拟端口读取输入值,将结果映射成从0至255的范围.并在一个数字输出端口使用得到的结果设置PWM.同时打印结果到串口监视器上.
-
- 电路描述:
- *电位器连接到模拟端口A0
- 电位器的中点接至模拟端口A0.
- 电位器的两端接+5伏和接地.
- *LED 连接数字端口9 返回接地
-
- created 29 Dec. 2008
- modified 9 Apr 2012
- by Tom Igoe
-
- 这个范例代码在公共范围(不受版权制约)
- */
- const int analogInPin = A0; //连接模拟口输入端口A0作为电压计
- const int analogOutPin = 9; // LED模拟输出连接至数字端口9
- int sensorValue = 0; // (电压数据))模拟值
- int outputValue = 0; // (映射后的)输出数据至PWM(模拟输出)
- void setup() {
- // 初始化串口通讯速率 9600 位每秒:
- Serial.begin(9600);
- }
- void loop() {
- //读取模拟数值:
- sensorValue = analogRead(analogInPin);
- //转换模拟数值并映射输出
- outputValue = map(sensorValue, 0, 1023, 0, 255);
- //改变模拟输出数值
- analogWrite(analogOutPin, outputValue);
- //在串口监视器上打印结果
- Serial.print("sensor = " );
- Serial.print(sensorValue);
- Serial.print("\t output = ");
- Serial.println(outputValue);
- //在下一次循环前等待300毫秒(原范例是2毫秒)
- //解决模拟数字转换器
- //在上一次的读取
- delay(300);
- }
复制代码
原理图
硬件连线图
(注:实物图未接发光二极管)
结果图,LED 3瓦灯泡下的运行结果.
关闭LED 灯泡时的结果
数字大约在25 至35之间.
|