- #include <Wire.h> //IIC
- #include <math.h>
- #include <U8glib.h>
- #include <SoftwareSerial.h>
- #include <JQ6500_Serial.h>
- JQ6500_Serial mp3(8, 9);
- U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
- int BH1750address = 0x23;
- byte buff[2];
- char str[10];
- int led = 7;
- void setup()
- {
- Wire.begin();
- Serial.begin(9600);
- pinMode(led, OUTPUT);
- mp3.begin(9600);
- mp3.reset();
- mp3.setVolume(30);
- mp3.setLoopMode(MP3_LOOP_NONE);
- }
- void loop()
- {
- int i,vsl;
- uint16_t val = 0;
- BH1750_Init(BH1750address);
- delay(200);
- if (2 == BH1750_Read(BH1750address))
- {
- val = ((buff[0] << 8) | buff[1]) / 1.2;
- vsl = 250 - val;
- // Serial.println(vsl);
- // Serial.println("[lx]");
- }
- int m = val;
- float bw = m / 100;
- float sw = m / 10 % 10;
- float gw = m % 10;
- u8g.setFont(u8g_font_ncenB18);
- u8g.firstPage(); //OLED左上角为0,0 ;字符定位为 左下角 firstPage标志图像循环开始
- do {
- u8g.drawStr( 0, 50, dtostrf(val, 5, 2, str)); //左上角
- }
- while ( u8g.nextPage() ); //nextPage标志图像循环结束
- delay(150);
- mp3.playFileByIndexNumber(11);
- delay(3000);
- if ( bw != 0 )
- {
- mp3.playFileByIndexNumber(bw + 1);
- delay(400);
- }
- int pp=!(bw == 0.0 && sw == 0.0);
- Serial.println(pp);
- if ( !(bw == 0 && sw == 0) )
- {
- mp3.playFileByIndexNumber(sw + 1);
- delay(400);
- }
- //if (mp3.getStatus() != MP3_STATUS_PLAYING )
- //{
- mp3.playFileByIndexNumber(gw + 1);
- delay(400);
- // }
- if (vsl > 150)
- {
- mp3.playFileByIndexNumber(12);
- delay(3000);
- digitalWrite(led, 1);
- delay(10);
- }
- else {
- digitalWrite(led, 0);
- }
- delay(5000);
- }
- int BH1750_Read(int address) //
- {
- int i = 0;
- Wire.beginTransmission(address);
- Wire.requestFrom(address, 2);
- while (Wire.available()) //
- {
- buff[i] = Wire.read(); //接收字节
- i++;
- }
- Wire.endTransmission();
- return i;
- }
- void BH1750_Init(int address)
- {
- Wire.beginTransmission(address);
- Wire.write(0x10);//1lx reolution 120ms
- Wire.endTransmission();
- }
复制代码 |