《Arduino程序设计基础》示例程序
因为代码比较多,论坛上贴出来太麻烦了,所以我把整理到了我blog上。各示例程序所使用到的类库下载,也提供了链接。
示例程序分为两部分,1至4章为基础部分,大家可以在以下网址查阅:
http://www.clz.me/arduino-book/examples/
5至10章为进阶部分,大家可以在以下网址查阅:
http://www.clz.me/arduino-book/examples-advanced/
还可以在github查看例程,或者打包下载例程:
https://github.com/coloz/Arduino-book
如有问题和建议,均可在本版提出
本帖最后由 奈何col 于 2014-1-21 23:15 编辑
2.5.1.1 流水灯实验
/*
OpenJumper LED Module
流水灯效果
www.openjumper.com
*/
void setup()
{
//初始化I/O口
for(int i=2;i<8;i++)
pinMode(i,OUTPUT);
}
void loop()
{
//从引脚2到引脚7,逐个点亮LED,等待1秒再熄灭LED
for(int i=2;i<7;i++)
{
digitalWrite(i,HIGH);
delay(1000);
digitalWrite(i,LOW);
}
//从引脚7到引脚2,逐个点亮LED,等待1秒再熄灭LED
for(int i=7;i>2;i--)
{
digitalWrite(i,HIGH);
delay(1000);
digitalWrite(i,LOW);
}
}
2.5.1.2按键控制LED
/*
OpenJumper Button Module
www.openjumper.com
*/
int buttonPin = 2;
int ledPin = 13;
int buttonState = 0;
void setup()
{
//初始化I/O口
pinMode(buttonPin,INPUT_PULLUP);
pinMode(ledPin,OUTPUT);
}
void loop()
{
buttonState = digitalRead(buttonPin);
//按住按键时,点亮LED;放开按键后,熄灭LED。
if(buttonState==HIGH)
{
digitalWrite(ledPin,LOW);
}
else
{
digitalWrite(ledPin,HIGH);
}
}
2.5.1.3 新的按键控制方式
/*
OpenJumper Button Module
按键控制LED
www.openjumper.com
*/
int buttonPin = 2;
int ledPin = 13;
boolean ledState=false;// 记录LED状态
boolean buttonState=true;// 记录按键状态
void setup()
{
//初始化I/O口
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin,OUTPUT);
}
void loop()
{
//等待按键按下
while(digitalRead(buttonPin)==HIGH){}
//当按键按下时,点亮或熄灭LED
if(ledState==true)
{
digitalWrite(ledPin,LOW);
ledState=!ledState;
}
else
{
digitalWrite(ledPin,HIGH);
ledState=!ledState;
}
delay(500);
}
2.5.2 项目:人体感应灯(数字传感器与继电器模块)
/*
OpenJumper Example
Pyroelectric Infrared Sensor And Relay
人体感应灯
http://www.openjumper.com/
*/
int PIRpin=2;
int RELAYpin=3;
void setup() {
Serial.begin(9600);
pinMode(PIRpin,INPUT);
pinMode(RELAYpin,OUTPUT);
}
void loop() {
// 等待传感器检测到人
while(!digitalRead(PIRpin)){}
// 将灯打开10秒,然后关闭
Serial.println("turn on");
digitalWrite(RELAYpin,HIGH);
delay(10000);
digitalWrite(RELAYpin,LOW);
Serial.println("turn off");
}
2.5.3.2 使用电位器控制呼吸灯的呼吸频率
/*
OpenJumper LEDModule
www.openjumper.com
*/
int ledPin = 9;//9号引脚控制LED
int pot=A0; //A0引脚读取电位器输出电压
void setup(){}
void loop(){
//LED逐渐变亮
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5)
{
analogWrite(ledPin, fadeValue);
//读取电位器输出电压,除以5时为了缩短延时时间
int time=analogRead(pot)/5;
delay(time);//将time用于延时
}
//LED逐渐变暗
for(int fadeValue = 255 ; fadeValue >= 0; fadeValue -=5)
{
analogWrite(ledPin, fadeValue);
delay(analogRead(pot)/5); //读取电位器输出电压,并用于延时
}
}
2.5.3.3 实验:通过光敏电阻检测环境光亮度
/*
OpenJumper light sensor
www.openjumper.com
*/
void setup()
{
// 初始化串口
Serial.begin(9600);
}
void loop()
{
// 读出当前光线强度,并输出到串口显示
int sensorValue = analogRead(A0);
Serial.println(sensorValue);
delay(1000);
}
2.5.4 项目:电子温度计
/*
OpenJumper LM35 Module
www.openjumper.com
*/
int LM35 = A0;
void setup()
{
// 初始化串口通信
Serial.begin(9600);
}
void loop()
{
// 读取传感器模拟值,并计算出当前温度
float temp = (5.0 * analogRead(LM35) * 100.0) / 1024;
// 将温度输出至串口显示
Serial.print("temperature " );
Serial.print(temp);
Serial.println("C");
delay(1000);
}
2.6 与计算机交流——串口的使用
int counter=0; // 计数器
void setup() {
//初始化串口
Serial.begin(9600);
}
void loop() {
//每loop循环一次,计数器变量加1
counter = counter+1;
// 输出变量
Serial.print(counter);
// 输出字符
Serial.print(‘:’);
// 输出字符串;
Serial.println("Hellow World");
delay(1000);
}
占楼 抢占位置,免得你们下载去了,没我的了。 :):):):)好例子,多看看实例 不错的例子! 楼主没有提供全书下载地址么?
机器人小西 发表于 2014-1-24 10:14
楼主没有提供全书下载地址么?
该书不提供下载,2月底各大电商平台会有售 :lol等待书的到来,配合书做做一些有趣的实验 .。。
期待更好玩的。。