“蓝桥杯”Arduino解析-传感器使用。
一、测试光敏电阻
【硬件准备】
1个单色LED灯,1个光敏电阻(可以使用旋转变阻代替)
【编程实现】
当光敏电阻识别到黑夜状态时(如采用旋转变阻器,则读数低于某设定值),LED以高亮度点亮,否则LED熄灭,如此循环。
提示:黑夜状态,即环境光强度低于自行设置的临界值的状态,实际操作时可以用手或者其它物体遮挡环境光。如采用旋转变阻器调低读数。
【评判标准】
30分:确实因为环境光强度的变化(如采用旋转变阻器,则确定因为旋转变阻器的转动),影响过LED灯的点亮和熄灭状态;
50分:完全符合题意。
【程序代码】
1、Mixly代码

2、Arduino C代码
const int ledPin=13;const int potPin=A0;void setup() {pinMode(ledPin,OUTPUT);Serial.begin(9600);}void loop() {Serial.println(analogRead(potPin));if(analogRead(potPin)>700) digitalWrite(ledPin,HIGH);else digitalWrite(ledPin,LOW);}
二、测试串口输入
【硬件准备】
1个全彩LED
【编程实现】
以串口监视器输入的命令,控制全彩LED的三色灯点亮或熄灭,具体规则如下:程序初始化时全彩LED灯熄灭;
输入“R”:红色点亮,输入“r”:红色熄灭;
输入“G”:绿色点亮,输入“g”:绿色熄灭;
输入“B”:蓝色点亮,输入“b”:蓝色熄灭。
如此循环。
【评判标准】
30分:确实因为串口输入的命令,改变过LED的点亮和熄灭状态;
50分:完全符合题意。
【程序代码】
1、Mixly代码

2、Arduino C代码
void setup() {Serial.begin(9600);pinMode(2,OUTPUT);pinMode(3,OUTPUT);pinMode(4,OUTPUT);}void loop() {char serialValue=Serial.read();if(serialValue=='G') digitalWrite(2,HIGH);if(serialValue=='g'){digitalWrite(2,LOW);digitalWrite(3,LOW);digitalWrite(4,LOW);}if(serialValue=='R') digitalWrite(3,HIGH);if(serialValue=='r'){digitalWrite(2,LOW);digitalWrite(3,LOW);digitalWrite(4,LOW);}if(serialValue=='B') digitalWrite(4,HIGH);if(serialValue=='b'){digitalWrite(2,LOW);digitalWrite(3,LOW);digitalWrite(4,LOW);}}
三、测试旋转变阻器和LCD1602
【硬件准备】
1个旋转变阻器,LCD1602
【编程实现】
1、通过转动旋转变阻器改变LCD在第一行显示字母“O”的位置,并且能准确地停留在LCD第1行0~15的任一指定位置上;
2、同时,在LCD第1行上,“O”的左侧都显示“>”,“O”的右侧都显示“<”;
3、当转动旋转变阻器时,不论字母“O”的位置如何改变,始终符合规则2的要求。
【程序代码】
1、Mixly代码

2、Arduino C代码
#include <Wire.h>#include <LiquidCrystal_I2C.h>LiquidCrystal_I2C mylcd(0x27,16,2);int location;void setup(){mylcd.init();mylcd.backlight();location=0;}void loop(){location=(map(analogRead(A0),1,1023,0,15));mylcd.setCursor(location-1,0);mylcd.print("O");for (int i=0;i<=location-1;i++) {mylcd.setCursor(i-1,0);mylcd.print(">");}for (int i=location+1;i<=16; i++) {mylcd.setCursor(i-1,0);mylcd.print("<");}}

添加 家长论坛微信

全部 0条评论