红绿灯
//2016-4-12
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#include "TM1637.h"
#define CLK 3//pins definitions for TM1637 and can be changed to other ports
#define DIO 2
#define R_COLOR 12
#define G_COLOR 13
TM1637 tm1637(CLK,DIO);
int num=0;
int pinmode[2]={R_COLOR,G_COLOR};
int ledno=0;
int oldled=-1;
void setup()
{
tm1637.init();
tm1637.set(BRIGHT_TYPICAL);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
pinMode(pinmode[0],OUTPUT);
pinMode(pinmode[1],OUTPUT);
}
void loop()
{
if (num >0){
num--;
}
else{
if (oldled!=-1){
closeLed(oldled);
}
showLed(ledno);
oldled=ledno;
if (ledno==0){
ledno=1;
}else{
ledno=0;
}
num=10;
}
showNumber();
delay(1000);
}
void showNumber(){
int8_t NumTab[] = {0,1,2,3,4,5,6,7,8,9};//0~9
int8_t ListDisp[4];
unsigned char i = 0;
unsigned char count = 0;
int numshow[]={num/1000,num%1000/100,num%100/10,num%10};
for(unsigned char BitSelect = 0;BitSelect < 4;BitSelect ++)
{
ListDisp[BitSelect] = numshow[BitSelect];
}
tm1637.display(0,ListDisp[0]);
tm1637.display(1,ListDisp[1]);
tm1637.display(2,ListDisp[2]);
tm1637.display(3,ListDisp[3]);
}
void showLed(int index){
digitalWrite(pinmode[index],HIGH);
}
void closeLed(int index){
digitalWrite(pinmode[index],LOW);
}