按键
题目:
1、两个按键实现一个抢答器,哪个按键先按下,哪个按键对应的LED就亮,后按的键对应的LED不亮。
2、两个按键实现一个抢答器,哪个按键先按下,哪个按键对应的LED就亮,后按的键对应的LED不亮。第三个按键是公共键,按下后所有的LED等不亮。
3、两个按键编号1和2,实现一个抢答器,1号按键先按下,数码管就显示1,2号按键先按下,数码管就显示2,数码管初始状态为0。公共按键按下后数码管恢复初始状态0。(这个题可以把按键增加到3个、4个、5个等)。
答案:
int a0 = 0;
int a1 = 0;
int a2 = 0;
int se = 0;
int LED1 = 11;
int LED2 = 12;
int setPins[] = {7, 6, 4, 2, 3, 9, 10, 5}; //端口设置
byte digits[10][8] = {
// a, b, c, d, e, f, g,h.
{1, 1, 1, 1, 1, 1, 0, 0}, // 0
{0, 1, 1, 0, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1, 0}, // 2
{1, 1, 1, 1, 0, 0, 1, 0}, // 3
{0, 1, 1, 0, 0, 1, 1, 0}, // 4
{1, 0, 1, 1, 0, 1, 1, 0}, // 5
{1, 0, 1, 1, 1, 1, 1, 0}, // 6
{1, 1, 1, 0, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1, 0}, // 8
{1, 1, 1, 1, 0, 1, 1, 0} // 9
};
void setup() {
Serial.begin(9600);
for(int i = 0; i<= 13;i++){
pinMode(i,OUTPUT);
}
}
void test01(){
a0 = analogRead(0);
a1 = analogRead(1);
a2 = analogRead(2);
if(a0 >= 521 &&se == 0){
digitalWrite(LED1,1);
digitalWrite(LED2,0);
se = 1;
}
if(a1 >= 521 &&se == 0){
digitalWrite(LED2,1);
digitalWrite(LED1,0);
se = 2;
}
}
void num(int a){
for(int i = 0; i< 8;i++){
digitalWrite(setPins[i],digits[a][i]);
}
}
void test02(){
a0 = analogRead(0);
a1 = analogRead(1);
a2 = analogRead(2);
if(a0 >= 521 &&se == 0){
digitalWrite(LED1,1);
digitalWrite(LED2,0);
se = 1;
}
if(a1 >= 521 &&se == 0){
digitalWrite(LED2,1);
digitalWrite(LED1,0);
se = 2;
}
if(a2 >= 521){
digitalWrite(LED1,0);
digitalWrite(LED2,0);
se = 0;
}
}
void test03(){
a0 = analogRead(0);
a1 = analogRead(1);
a2 = analogRead(2);
if(a0 >= 521 &&se == 0){
se = 1;
}
if(a1 >= 521 &&se == 0){
se = 2;
}
if(a2 >= 521){
se = 0;
}
num(se);
}
void loop() {
test01();
}
光敏
题目:
1,光敏传感器控制3个LED灯,在光敏传感器的三个强度下亮不同的LED灯。;
2、光敏传感器和数码管,光敏强度的三个状态数码管分别显示2、5、9。
3、光敏传感器和呼吸灯,光线越强呼吸灯的亮度越弱,光线越弱呼吸灯的强度越强。
4、随着光线强度的变化数码管以此从0、1...9显示。
5、光线强度控制蜂鸣器,光线强度大于某一个值时蜂鸣器报警。
代码:
int a0 = 0;
int a1 = 0;
int s = 0;
int LED1 = 11;
int LED2 = 12;
int LED3 = 13;
int Fe = 8;//蜂鸣器
int setPins[] = {7, 6, 4, 2, 3, 9, 10, 5}; //端口设置
byte digits[10][8] = {
// a, b, c, d, e, f, g,h.
{1, 1, 1, 1, 1, 1, 0, 0}, // 0
{0, 1, 1, 0, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1, 0}, // 2
{1, 1, 1, 1, 0, 0, 1, 0}, // 3
{0, 1, 1, 0, 0, 1, 1, 0}, // 4
{1, 0, 1, 1, 0, 1, 1, 0}, // 5
{1, 0, 1, 1, 1, 1, 1, 0}, // 6
{1, 1, 1, 0, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1, 0}, // 8
{1, 1, 1, 1, 0, 1, 1, 0} // 9
};
void setup() {
Serial.begin(9600);
for(int i = 0; i<= 13;i++){
pinMode(i,OUTPUT);
}
}
void num(int a){
for(int i = 0; i< 8;i++){
digitalWrite(setPins[i],digits[a][i]);
}
}
void ti01(){
a0 = analogRead(0);
if(a0 <= 300){
digitalWrite(LED1,1);
digitalWrite(LED2,0);
digitalWrite(LED3,0);
}else if(a0 <= 700){
digitalWrite(LED1,0);
digitalWrite(LED2,1);
digitalWrite(LED3,0);
}else{
digitalWrite(LED1,0);
digitalWrite(LED2,0);
digitalWrite(LED3,1);
}
}
void ti02(){
a0 = analogRead(0);
if(a0 <= 300){
num(2);
}else if(a0 <= 700){
num(5);
}else{
num(9);
}
}
void ti03(){
a0 = analogRead(0);
int n = (a0*255.0)/1023.0;
Serial.println(n);
analogWrite(LED1,n);
}
void ti04(){
a0 = analogRead(0);
int l = a0/105;
num(l);
}
void ti05(){
a0 = analogRead(0);
Serial.println(a0);
if(a0 > 700){
digitalWrite(Fe,1);
}else{
digitalWrite(Fe,1);
}
}
void loop() {
}
数码管
题目:
1. 1位数码管和3个LED灯,数码管显示2、5、8,每显示一个数字对应一个LED灯亮,时间间隔2秒。
2. 1位数码管和1个LED灯,LED的亮度可以调节,数码管依次显示1、5、9,数码管显示1时LED灯最暗,显示9时LED灯最亮,时间间隔2秒。
3. 3个红、黄、绿LED灯代表交通灯显示,先红灯亮,持续3秒,数码管显示3,每秒倒计时到0,然后绿灯亮,持续2秒,数码管显示2,每秒倒计时到0。然后黄灯闪三次,每次时间间隔1秒,数码管显示3,每秒倒计时到0。
答案
int LED1 = 11;
int LED2 = 12;
int LED3 = 13;
int setPins[] = {7, 6, 4, 2, 3, 9, 10, 5}; //端口设置
byte digits[10][8] = {
// a, b, c, d, e, f, g,h.
{1, 1, 1, 1, 1, 1, 0, 0}, // 0
{0, 1, 1, 0, 0, 0, 0, 0}, // 1
{1, 1, 0, 1, 1, 0, 1, 0}, // 2
{1, 1, 1, 1, 0, 0, 1, 0}, // 3
{0, 1, 1, 0, 0, 1, 1, 0}, // 4
{1, 0, 1, 1, 0, 1, 1, 0}, // 5
{1, 0, 1, 1, 1, 1, 1, 0}, // 6
{1, 1, 1, 0, 0, 0, 0, 0}, // 7
{1, 1, 1, 1, 1, 1, 1, 0}, // 8
{1, 1, 1, 1, 0, 1, 1, 0} // 9
};
void setup() {
Serial.begin(9600);
for(int i = 0; i<= 13;i++){
pinMode(i,OUTPUT);
}
}
void num(int a){
for(int i = 0; i< 8;i++){
digitalWrite(setPins[i],digits[a][i]);
}
}
void test01(){
num(2);
digitalWrite(LED1,1);
delay(2000);
digitalWrite(LED1,0);
num(5);
digitalWrite(LED2,1);
delay(2000);
digitalWrite(LED2,0);
num(8);
digitalWrite(LED3,1);
delay(2000);
digitalWrite(LED3,0);
}
void test02(){
num(1);
analogWrite(11,10);
delay(2000);
num(5);
analogWrite(11,100);
delay(2000);
num(9);
analogWrite(11,255);
delay(2000);
}
void test03(){
for(int i = 3; i > 0; i--){
digitalWrite(LED3,1);
num(i);
delay(1000);
}
digitalWrite(LED3,0);
for(int i = 2; i > 0; i--){
digitalWrite(LED1,1);
num(i);
delay(1000);
}
digitalWrite(LED1,0);
for(int i = 3; i > 0; i--){
digitalWrite(LED2,1);
num(i);
delay(500);
digitalWrite(LED2,0);
delay(500);
}
}
void loop(){
}
电位器
题目:
1. 电位器模拟电压表
2. 电位器控制LED的亮度
3. 电位器控制LED的闪烁频率
代码:
int a0 = 0;
void setup() {
Serial.begin(9600);
pinMode(11,OUTPUT);
}
//模拟电压表
void test01(){
a0 = analogRead(0);
double val = (a0*5.0)/1023.0;
Serial.println(val);
delay(1000);
}
//电位器控制LED的亮度
void test02(){
a0 = analogRead(0);
int l = (a0*255.0)/1023.0;
analogWrite(11,l);
}
//电位器控制LED的闪烁频率
void test03(){
a0 = analogRead(0);
digitalWrite(11,1);
delay(a0/2.0+50);
digitalWrite(11,0);
delay(a0/2.0+50);
}
void loop() {
test03();
}
LED灯
题目:
1.依次亮灯、在依次关灯
2.依次亮灯和关灯
3.全亮和全灭
代码:
void setup() {
for(int i = 2;i <= 5; i++){
pinMode(i,OUTPUT);
}
}
void test01(){
for(int i = 2;i <= 5; i++){
digitalWrite(i,1);
delay(1000);
}
for(int i = 2;i <= 5; i++){
digitalWrite(i,0);
delay(1000);
}
}
void test02(){
for(int i = 2;i <= 5; i++){
digitalWrite(i,1);
delay(1000);
}
for(int i = 2;i <= 5; i++){
digitalWrite(i,0);
}
delay(1000);
}
void test03(){
for(int i = 2;i <= 5; i++){
digitalWrite(i,1);
}
delay(1000);
for(int i = 2;i <= 5; i++){
digitalWrite(i,0);
}
delay(1000);
}
void loop() {
test03();
}