#include <Wire.h> #include <U8g2lib.h> #include <SoftwareSerial.h>
#define led 13 #define rxPin 9 #define txPin 8 SoftwareSerial mySerial(rxPin, txPin);
int wendu; int shidu; int light_strength; int led_status=0; int wendu_status=0; char test;
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,10,11,U8X8_PIN_NONE);
static const unsigned char PROGMEM str0[] = { 0x00,0x00,0x00,0x00,0xBF,0x7F,0x08,0x08,0x08,0x08,0x08,0x04,0x08,0x04,0x3E,0x16, 0x08,0x25,0x88,0x44,0x48,0x44,0x08,0x04,0x38,0x04,0x07,0x04,0x02,0x04,0x00,0x04}; static const unsigned char PROGMEM str1[] = { 0x04,0x01,0x04,0x02,0xC4,0x1F,0x84,0x08,0x1F,0x05,0xE4,0x7F,0x04,0x00,0xC4,0x1F, 0x44,0x10,0xC4,0x1F,0x44,0x10,0xDC,0x1F,0x87,0x04,0x82,0x44,0x40,0x44,0x30,0x78}; static const unsigned char PROGMEM str2[] = { 0x00,0x00,0xC4,0x1F,0x48,0x10,0x48,0x10,0xC1,0x1F,0x42,0x10,0x42,0x10,0xC8,0x1F, 0x08,0x00,0xE4,0x3F,0x27,0x25,0x24,0x25,0x24,0x25,0x24,0x25,0xF4,0x7F,0x00,0x00}; static const unsigned char PROGMEM str3[] = { 0x00,0x00,0xE4,0x1F,0x28,0x10,0x28,0x10,0xE1,0x1F,0x22,0x10,0x22,0x10,0xE8,0x1F, 0x88,0x04,0x84,0x04,0x97,0x24,0xA4,0x14,0xC4,0x0C,0x84,0x04,0xF4,0x7F,0x00,0x00}; static const unsigned char PROGMEM str4[] = { 0x80,0x00,0x84,0x10,0x88,0x10,0x90,0x08,0x90,0x04,0x80,0x00,0xFF,0x7F,0x20,0x02, 0x20,0x02,0x20,0x02,0x20,0x02,0x10,0x42,0x10,0x42,0x08,0x42,0x04,0x7C,0x03,0x00}; static const unsigned char PROGMEM str5[] = { 0x00,0x00,0xBE,0x3F,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x29,0xBE,0x10,0x22,0x3F, 0x22,0x21,0x22,0x21,0x22,0x21,0x3E,0x3F,0x00,0x00,0x12,0x11,0x22,0x22,0x21,0x22}; static const unsigned char PROGMEM str6[] = { 0x00,0x00,0x9F,0x3F,0x90,0x20,0x90,0x20,0x90,0x3F,0x1E,0x04,0x02,0x04,0xC2,0x7F, 0x42,0x44,0x5E,0x44,0xD0,0x7F,0x10,0x04,0x10,0x24,0x10,0x44,0xEA,0x7F,0x04,0x40}; static const unsigned char PROGMEM str7[] = { 0x80,0x00,0x00,0x01,0xFC,0x7F,0x44,0x04,0x44,0x04,0xFC,0x3F,0x44,0x04,0x44,0x04, 0xC4,0x07,0x04,0x00,0xF4,0x0F,0x24,0x08,0x42,0x04,0x82,0x03,0x61,0x0C,0x1C,0x70}; static const unsigned char PROGMEM str8[] = { 0x08,0x00,0x08,0x00,0xC8,0x7F,0x08,0x04,0x2A,0x04,0x1A,0x04,0x0A,0x04,0x09,0x04, 0x08,0x04,0x08,0x04,0x08,0x04,0x14,0x04,0x24,0x04,0x22,0x04,0x02,0x05,0x01,0x02}; static const unsigned char PROGMEM str9[] = { 0x00,0x04,0x80,0x04,0xBF,0x04,0x88,0x3F,0x88,0x04,0x48,0x04,0x3E,0x04,0xC8,0x7F, 0x08,0x0E,0x08,0x15,0x08,0x15,0xB8,0x24,0x87,0x24,0x42,0x44,0x00,0x04,0x00,0x04}; static const unsigned char PROGMEM str10[] = { 0x00,0x00,0xFE,0x3F,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0xFF,0x7F, 0x10,0x04,0x10,0x04,0x10,0x04,0x10,0x04,0x08,0x04,0x08,0x04,0x04,0x04,0x02,0x04}; static const unsigned char PROGMEM str11[] = { 0x08,0x08,0x10,0x08,0x10,0x04,0x00,0x00,0xFC,0x1F,0x80,0x00,0x80,0x00,0x80,0x00, 0xFF,0x7F,0x80,0x00,0x40,0x01,0x40,0x01,0x20,0x02,0x10,0x04,0x0C,0x18,0x03,0x60};
void oled_image() { u8g2.clearBuffer(); u8g2.drawXBMP(0, 0, 16, 16, str0);u8g2.drawXBMP(16, 0, 16, 16, str1);u8g2.drawXBMP(32, 0, 16, 16, str2);u8g2.drawXBMP(48, 0, 16, 16, str7); u8g2.drawXBMP(0, 16, 16, 16, str0);u8g2.drawXBMP(16, 16, 16, 16, str1);u8g2.drawXBMP(32, 16, 16, 16, str3);u8g2.drawXBMP(48, 16, 16, 16, str7); u8g2.drawXBMP(0, 32, 16, 16, str4);u8g2.drawXBMP(16, 32, 16, 16, str5);u8g2.drawXBMP(32, 32, 16, 16, str6);u8g2.drawXBMP(48, 32, 16, 16, str7); u8g2.drawXBMP(0, 48, 16, 16, str8);u8g2.drawXBMP(16, 48, 16, 16, str9);u8g2.drawXBMP(32, 48, 16, 16, str10);u8g2.drawXBMP(48, 48, 16, 16, str11); u8g2.setFont(u8g2_font_ncenB14_tr); u8g2.setCursor(64, 16); u8g2.print(":"); u8g2.setCursor(64, 32); u8g2.print(":"); u8g2.setCursor(64, 48); u8g2.print(":"); u8g2.setCursor(64, 64); u8g2.print(":");
u8g2.sendBuffer(); }
void oleddisplay() { u8g2.clearBuffer(); u8g2.drawXBMP(0, 0, 16, 16, str0);u8g2.drawXBMP(16, 0, 16, 16, str1);u8g2.drawXBMP(32, 0, 16, 16, str2);u8g2.drawXBMP(48, 0, 16, 16, str7); u8g2.drawXBMP(0, 16, 16, 16, str0);u8g2.drawXBMP(16, 16, 16, 16, str1);u8g2.drawXBMP(32, 16, 16, 16, str3);u8g2.drawXBMP(48, 16, 16, 16, str7); u8g2.drawXBMP(0, 32, 16, 16, str4);u8g2.drawXBMP(16, 32, 16, 16, str5);u8g2.drawXBMP(32, 32, 16, 16, str6);u8g2.drawXBMP(48, 32, 16, 16, str7); u8g2.drawXBMP(0, 48, 16, 16, str8);u8g2.drawXBMP(16, 48, 16, 16, str9);u8g2.drawXBMP(32, 48, 16, 16, str10);u8g2.drawXBMP(48, 48, 16, 16, str11); u8g2.setFont(u8g2_font_ncenB14_tr); u8g2.setCursor(64, 16); u8g2.print(":"); u8g2.setCursor(64, 32); u8g2.print(":"); u8g2.setCursor(64, 48); u8g2.print(":"); u8g2.setCursor(64, 64); u8g2.print(":"); u8g2.setFont(u8g2_font_ncenB14_tr); u8g2.setCursor(92, 32); u8g2.print(wendu); u8g2.setCursor(92, 16); u8g2.print(shidu); u8g2.setCursor(92, 48); u8g2.print(light_strength); if(led_status==1) u8g2.drawXBMP(92, 48, 16, 16, str10); else u8g2.drawXBMP(92, 48, 16, 16, str11); u8g2.sendBuffer(); }
int start_flag; u8 i; u8 count; u8 data_control[9]; u8 recent_data[3]; void read_usart() { i = mySerial.available(); if(i != 0) { while(i--) { recent_data[2]=recent_data[1]; recent_data[1]=recent_data[0]; recent_data[0]=mySerial.read(); if(start_flag) { data_control[count]=recent_data[0]-48; count++; if(count>=9) { start_flag=0; count=0; } } if(recent_data[0]==49&&recent_data[1]==55&&recent_data[2]==49) { start_flag=1; } } } else { } }
void setup() { Serial.begin(9600); Serial.print("大家好"); mySerial.begin(9600); mySerial.println("T"); pinMode(led, OUTPUT); u8g2.begin(); u8g2.enableUTF8Print(); oled_image(); } int main_zhiling; void loop() { read_usart(); wendu=data_control[0]*100+data_control[1]*10+data_control[2]; shidu=data_control[3]*100+data_control[4]*10+data_control[5]; light_strength=data_control[6]*100+data_control[7]*10+data_control[8];
Serial.print(0xAB); Serial.print((u8)shidu/100);Serial.print((u8)shidu/10%10);Serial.print((u8)shidu%10); Serial.print((u8)wendu/100);Serial.print((u8)wendu/10%10);Serial.print((u8)wendu%10); Serial.print((u8)light_strength/100);Serial.print((u8)light_strength/10%10);Serial.print((u8)light_strength%10); Serial.print(0xBA);
Serial.available(); main_zhiling=Serial.read(); if(main_zhiling=='T')led_status=1; else if(main_zhiling=='F')led_status=0;
if(led_status)digitalWrite(led,1),mySerial.print("T"); else digitalWrite(led,0),mySerial.print("F");
oleddisplay(); delay(500); }
|