2014暑期短学期Arduino(4)
昨晚想在土壤湿度计上加上小灯连在DO口,每个湿度区间亮一种颜色。早上一到实验室就试着连了下,结果不能连上三个灯区分亮暗,因为只有一个DO可以连接灯的长脚。之后想让灯泡独立开来(传感器-板子-灯)就是传感器不和灯有线相连,结果失败了,灯一直亮。于是查了下资料:
*DO 小板数字量输出接口(0和1)原来只能读0和1哦~
*AO 小板模拟量输出接口
于是放弃这个方案,开始做电子屏显示数字了。
第一个做了LCD显示屏:
根据example里的“LiquidCrystal Library - Hello World”修改了代码。
#include
LiquidCrystal lcd(8,13,9,4,5,6,7);
int potPin = 4;
int val=0;
int led=10;
void setup()
{
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop ()
{
val=analogRead(A4);
Serial.print("Moisture Sensor Value:");
Serial.println(val);
if(val>700){
digitalWrite(led, HIGH);
delay(1000);
}
lcd.begin(16, 2);
lcd.print("Humidity:");
lcd.print(val);
delay(2000);//延时1S
}
LiquidCrystal lcd(8,13,9,4,5,6,7);
int potPin = 4;
int val=0;
int led=10;
void setup()
{
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop ()
{
val=analogRead(A4);
Serial.print("Moisture Sensor Value:");
Serial.println(val);
if(val>700){
digitalWrite(led, HIGH);
delay(1000);
}
lcd.begin(16, 2);
lcd.print("Humidity:");
lcd.print(val);
delay(2000);//延时1S
}
第一个LCD成功之后,小伙伴拿了个蓝牙来,于是我们就开始一起研究啦~
*参考网址:Arduino蓝牙模块与Android实现通信
用上蓝牙可以连接手机很酷啊,于是把上述的基础蓝牙应用到土壤湿度计上。又加了一个小灯,利用蓝牙手动控制开关。手机发送“P”开,手机发送“A”关闭。代码加了一段:
int ledpin=2;
char va;
void setup()
{
......
pinMode(ledpin, OUTPUT);
}
void loop ()
{
......
va=Serial.read();
if(va=='P')
{
digitalWrite(ledpin,HIGH);
Serial.println("LED ON!");
}
else if(va=='A'){
digitalWrite(ledpin,LOW);
Serial.println("LED OFF!");
}
}
char va;
void setup()
{
......
pinMode(ledpin, OUTPUT);
}
void loop ()
{
......
va=Serial.read();
if(va=='P')
{
digitalWrite(ledpin,HIGH);
Serial.println("LED ON!");
}
else if(va=='A'){
digitalWrite(ledpin,LOW);
Serial.println("LED OFF!");
}
}
*参考:蓝牙控制LED
班里的LCD显示屏被抢完了...我放在桌上不知道被谁拿走了。于是下午只好自己研究那个搜不到什么资料的LED KEY。找到了他的库文件:TM1638 Library v2.1.3。找了里面的例子看看研究,最后成功显示出数字啦~
*参考的程序:
#include
// define a module on data pin 8, clock pin 9 and strobe pin 7
TM1638 module(8, 9, 7);
void setup() {
// display a hexadecimal number and set the left 4 dots
module.setDisplayToHexNumber(0x1234ABCD, 0xF0);
}
void loop() {
byte keys = module.getButtons();
// light the first 4 red LEDs and the last 4 green LEDs as the buttons are pressed
module.setLEDs(((keys & 0xF0) << 8) | (keys & 0xF));
}
// define a module on data pin 8, clock pin 9 and strobe pin 7
TM1638 module(8, 9, 7);
void setup() {
// display a hexadecimal number and set the left 4 dots
module.setDisplayToHexNumber(0x1234ABCD, 0xF0);
}
void loop() {
byte keys = module.getButtons();
// light the first 4 red LEDs and the last 4 green LEDs as the buttons are pressed
module.setLEDs(((keys & 0xF0) << 8) | (keys & 0xF));
}
研究了下上述程序段,最后试出来了,信息和程序如下:
*Hex是16进制的意思,查阅资料得Dec是arduino中的十进制的意思。
*接线方法:define a module on data pin 8, clock pin 9 and strobe pin 7
#include
TM1638 module(8, 9, 7);
......
void setup()
{
......
}
void loop ()
{
......
module.setDisplayToDecNumber(val, 0xF0);
......
}
TM1638 module(8, 9, 7);
......
void setup()
{
......
}
void loop ()
{
......
module.setDisplayToDecNumber(val, 0xF0);
......
}
今天完成了超多任务,明天继续~ 准备和小伙伴们做脉搏心跳测试哈哈^0^