#include <U8g2lib.h>
#include "u8g2_font_shnufont.h"
#include "pitches.h"
#include "song.h"
int switchState = 0;
int prevSwitchState = 0;
const int switchpin = 3;
const int redled = 12;
const int greenled = 8;
const int relay = 13;
int sensorValue = 0;//红外传感器读数
const int sensorPin = A0; // 红外传感器引脚
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ A5, /* data=*/ A4, /* reset=*/ U8X8_PIN_NONE); // All Boards without Reset of the Display
void setup(void) {
u8g2.begin();
u8g2.enableUTF8Print(); // enable UTF8 support for the Arduino print() function
u8g2.setFont(u8g2_font_shnufont);
u8g2.setFontDirection(0);
pinMode(redled, OUTPUT);
pinMode(greenled, OUTPUT);
pinMode(6, OUTPUT);
length = sizeof(tune) / sizeof(tune[0]);
Serial.begin(9600);
pinMode(sensorPin, INPUT);
pinMode(relay, OUTPUT);
pinMode(switchpin, INPUT);
}
void loop(void) {
switchState = digitalRead(switchpin);
sensorValue = analogRead(A0);
u8g2.clearBuffer();
digitalWrite(greenled, HIGH);//点亮绿灯
u8g2.setCursor(0, 15);
u8g2.print("绿灯可以通行");
u8g2.sendBuffer();
delay(5000);
digitalWrite(greenled, LOW);
digitalWrite(redled, HIGH);
u8g2.setCursor(0, 15);
u8g2.print("红灯禁止通行");
u8g2.sendBuffer();
if (sensorValue > 150) {
u8g2.setCursor(0, 50);
u8g2.print("闯红灯请退回");
u8g2.sendBuffer();
for (int i = 0; i < length; i++)
{
tone(6, tune[i]);
delay(400 * durt[i]);
noTone(6);
}
}
delay(10000);
}