先放一张图
主要功能就是通过光敏二极管的通断,来实现数量累加,并且当数量达到200时开启蜂鸣器报警。程序实现很简答,主要就是在处理数码管的位数计算,其他的就没什么了。硬件使用的是arduino pro mini 328一块,光敏二极管模块一个,玩具激光头一个,线缆三根,tm1637四位数码管模块一个,有源蜂鸣器一个,万用电路板一块,防水塑料外壳一个,220欧电阻一个。
整套设备使用5V的USB供电,由于激光头长时间使用容易烧坏,所以我这里串联一个220欧电阻。
#include "TM1637.h" #define CLK 3 #define DIO 2 TM1637 tm1637(CLK,DIO); int number = 0; int sta = 0; int buzzer = 6; int i = 0; void setup() { pinMode(4, INPUT); pinMode(buzzer,OUTPUT); tm1637.init(); tm1637.set(BRIGHT_TYPICAL);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7; } void loop() { int temp = digitalRead(4); if(temp == 1){ if(sta == 0){ number += 1; if(number<10){ tm1637.display(3,number); normal(); } else if(number>=10 && number <100){ tm1637.display(3,number%10); tm1637.display(2,number/10); normal(); } else if(number>=100 && number <1000){ if(number>=200){ warning(); } else{ normal(); } tm1637.display(3,number%10); tm1637.display(2,(number/10)%10); tm1637.display(1,number/100); } else if(number>=1000 && number <9999){ warning(); tm1637.display(3,number%10); tm1637.display(2,(number/10)%10); tm1637.display(1,(number/100)%10); tm1637.display(0,number/1000); } else{ number = 0; } sta = 1; } } else{ sta = 0; } } void normal(){ for(i=0;i<50;i++){ digitalWrite(buzzer,HIGH); delay(1); digitalWrite(buzzer,LOW); } } void warning(){ for(i=0;i<150;i++){ digitalWrite(buzzer,HIGH); delay(1); digitalWrite(buzzer,LOW); delay(1); } }
本文链接:https://www.92ez.com/?action=show&id=50
!!! 转载请先联系non3gov@gmail.com授权并在显著位置注明作者和原文链接 !!! 小黑屋
提示:技术文章有一定的时效性,请先确认是否适用你当前的系统环境。
!!! 转载请先联系non3gov@gmail.com授权并在显著位置注明作者和原文链接 !!! 小黑屋
提示:技术文章有一定的时效性,请先确认是否适用你当前的系统环境。