“蓝桥杯”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条评论