|
|

楼主 |
发表于 2016-4-25 08:28:43
|
显示全部楼层
发个代码试下,麻烦大神们帮我看下,谢谢!- #define sclk 30
- #define mosi 28
- #define cs 26
- #define rst 24
- #define dc 22
- #define BLACK 0x0000
- #define BLUE 0x001F
- #define RED 0xF800
- #define GREEN 0x07E0
- #define CYAN 0x07FF
- #define MAGENTA 0xF81F
- #define YELLOW 0xFFE0
- #define WHITE 0xFFFF
- #define BROWN 0xBC40
- #define GRAY 0x2222
- #define PURPLE 0xf81f
- #define GND 23
- #define lightSnr A1
- #define fireSnr 7
- #define rotation A0
- int redLed = 12;
- int blueLed = 13;
- int speaker = 5;
- int i;
- float pi = 3.1415926 ;
- int counter=0;
- #include <Adafruit_GFX.h>
- #include <Adafruit_SSD1331.h>
- #include <SPI.h>
- Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, mosi, sclk, rst);
- #include <DHT.h>
- #define DHTPIN 4
- #define DHTTYPE DHT11
- DHT dht (DHTPIN, DHTTYPE);
- void setup() {
- pinMode(GND,OUTPUT);
- pinMode(lightSnr,INPUT);
- pinMode(fireSnr,INPUT);
- pinMode(rotation,INPUT);
- pinMode(blueLed,OUTPUT);
- pinMode(speaker,OUTPUT);
- digitalWrite(GND,LOW);
- display.begin();
- dht.begin();
- display.fillScreen(BLACK);
- display.setCursor(5, 25);
- display.setTextColor(GREEN);
- display.setTextSize(1);
- display.println("Initializing...");
- delay(200);
- sensorCheck();
- //uint16_t time = millis();
- //time = millis() - time;
- display.fillScreen(BLACK);
- delay(1);
- //Serial.begin(115200);
- attachInterrupt(0,counterChange,FALLING);
- attachInterrupt(1,counterDown,FALLING);
- }
-
- void loop() {
- switch(counter){
- case 0:envConsole();
- delay(200);
- break;
- case 1:showTemperature();
- delay(200);
- break;
- case 2:drawRadarbg();
- delay(200);
- break;
- case 3:clearScreen();
- delay(200);
- break;
- //case 4:drawThermo();
- //delay(200);
- //break;
- }
- }
- /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
- void drawRadarbg() {
- display.fillScreen(BLACK);
- display.setCursor(65,1);
- display.setTextSize(1);
- display.setTextColor(PURPLE);
- display.println("M3");
- display.fillTriangle(81,4,85,0,85,8,0x6666);
- display.fillTriangle(87,0,87,8,91,4,0x6666);
- for(int r=0; r<32; r=r+7){
- display.drawCircle(49,33, r, GREEN);
- }
- display.drawFastVLine(49,2,62,GREEN);
- display.drawFastHLine(7,33,82,GREEN);
- display.drawFastVLine(94,1,62,GREEN);
- display.drawFastVLine(95,1,62,GREEN);
- display.drawFastVLine(1,1,62,GREEN);
- display.drawFastVLine(0,1,62,GREEN);
- for(int y=1; y < 63; y+=5){
- display.drawFastHLine(2,y,3, GREEN);
- display.drawFastHLine(91,y,3, GREEN);
- }
- while(1){
- //display.drawPixel(display.width()/2, display.height()/2, GREEN);
- for(int c=0;c<120;c++){
- int scanx=27*sin((c*3.0)/180.0*pi);
- int scany=27*cos((c*3.0)/180.0*pi);
- display.drawLine(49,33,49+scanx,33-scany,0x6600);
- display.drawFastVLine(49,2,62,GREEN);
- display.drawFastHLine(7,33,82,GREEN);
- //delay(1);
- for(int r=0; r<32; r=r+7){
- display.drawCircle(49,33, r, GREEN);
- }
- }
- display.fillCircle(49,33,27,BLACK);
- if(counter!=2) break;
- }
- }
- /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
- void sensorCheck(){
- int h = dht.readHumidity();
- int t = dht.readTemperature();
- int f = dht.readTemperature(true);
- if (isnan(dht.readHumidity()) || isnan(dht.readTemperature())){
- display.fillScreen(BLACK);
- display.setCursor(5, 30);
- display.setTextColor(WHITE);
- display.setTextSize(1);
- display.println("Failed to read!");
- delay(500);
- display.fillScreen(BLACK);
- return;
- }
- }
- /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
- void drawDataLine(){
- /*int valLight=map(analogRead(A1),0,1023,45,15);
- for(int x=36;x<90;x++){
- display.drawPixel(x,valLight,YELLOW);
- */
- int valRot=map(analogRead(rotation),0,1023,0,5);
- int light[100];
- int temp[100];
- int humi[100];
- for(i=0;i<100;i++){
- light[i]= map(analogRead(A1),0,1023,45,15);
- humi[i] = map(dht.readHumidity(),0,100,45,15);
- temp[i]= map(dht.readTemperature(),0,100,45,15);
- delay(1);
- }
- for(int x=36;x<88;x++) {
- display.drawLine(x,light[x],x+1,light[x+1],YELLOW);
- display.drawLine(x,temp[x]-valRot,x+1,temp[x+1]-valRot,RED);
- display.drawLine(x,humi[x]-valRot,x+1,humi[x+1]-valRot,CYAN);
- delay(10);
- }
- }
- /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
- void drawTempData(){
- int h = dht.readHumidity();
- int t = dht.readTemperature();
- int f = dht.readTemperature(true);
- int valLight=map(analogRead(lightSnr),0,1023,0.02,1500);
- display.setTextSize(1);
- display.setCursor(9,13);
- display.setTextColor(WHITE,BLACK);
- display.print(t);
- display.setCursor(9,26);
- display.setTextColor(WHITE,BLACK);
- display.print(h);
- display.setCursor(9,39);
- display.setTextColor(WHITE,BLACK);
- display.print(f);
- display.setCursor(45,52);
- display.setTextSize(0);
- display.setTextColor(WHITE,BLACK);
- display.print("L=");
- display.print(valLight);
- delay(500);
- display.fillRect(69,52,21,7,BLACK);
- display.setCursor(57,52);
- display.setTextSize(0);
- display.setTextColor(WHITE,BLACK);
- display.print(valLight);
- delay(50);
- }
- /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
- void clearData(){
- for(int y=13; y<40; y=y+13){
- display.fillRect(9,y,15,7,BLACK);
- }
- }
- /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
- void clearDataLine(){
- display.fillRect(36,15,54,31 ,BLACK);
- }
- /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
- void drawRuler(){
- display.drawFastVLine(1,1,display.height()-2,GREEN);
- display.drawFastVLine(0,1,display.height()-2,GREEN);
- display.drawFastVLine(94,1,display.height()-2,GREEN);
- display.drawFastVLine(95,1,display.height()-2,GREEN);
- for(int y=1; y < 63; y+=5){
- display.drawFastHLine(91,y,3, GREEN);
- }
- for(int y=1; y < 63; y+=5){
- display.drawFastHLine(2,y,3, GREEN);
- }
- }
-
- void drawTittle(){
- display.setCursor(16,1);
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.println("EDMS");
- display.setCursor(65,1);
- display.setTextSize(1);
- display.setTextColor(PURPLE);
- display.println("M1");
- display.setTextSize(1);
- display.setCursor(1,13);
- display.setTextColor(WHITE,RED);
- display.println("T");
- display.setCursor(1,26);
- display.setTextColor(WHITE,CYAN);
- display.println("H");
- display.setCursor(1,39);
- display.setTextColor(WHITE,GREEN);
- display.println("F");
-
- display.setCursor(25,13);
- display.setTextColor(WHITE);
- display.drawPixel(23,12,WHITE);
- display.println("C");
- display.setCursor(25,26);
- display.setTextColor(WHITE);
- display.println("%");
- display.setCursor(25,39);
- display.setTextColor(WHITE);
- display.drawPixel(23,38,WHITE);
- display.println("F");
- }
- void drawHead(){
- display.drawLine(0,10,96,10,0x6666);
- display.drawLine(11,0,11,10,0x6666);
- display.drawLine(31,10,31,96,0x6666);
- display.fillTriangle(81,4,85,0,85,8,0x2222);
- display.fillTriangle(87,0,87,8,91,4,0x6666);
- display.fillCircle(4,4,2,RED);
- delay(500);
- display.fillCircle(4,4,2,BLUE);
- }
- void drawTab(){
- display.drawRect(32,12,62,38,GRAY);
- for(int y=14; y<48; y=y+4){
- display.drawFastHLine(32,y,3,GRAY);
- display.drawFastHLine(90,y,3,GRAY);
- }
- for(int x=35; x<90; x=x+4){
- display.drawFastVLine(x,12,3,GRAY);
- display.drawFastVLine(x,46,3,GREEN);
- }
- display.drawFastHLine(32,48,62,GREEN);
- display.drawLine(92,46,94,48,GREEN);
- display.drawLine(92,50,94,48,GREEN);
- }
- /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
- void tempAlarm(){
- display.fillTriangle(23,52,18,62,29,62,YELLOW);
- display.setCursor(21,56);
- display.setTextColor(WHITE);
- display.print("H");
- delay(1000);
- display.fillTriangle(23,52,18,62,29,62,BLACK);
- }
- void fireAlarm(){
- display.fillTriangle(23,52,18,62,29,62,RED);
- display.setCursor(21,56);
- display.setTextColor(WHITE);
- display.print("F");
- delay(1000);
- display.fillTriangle(23,52,18,62,29,62,BLACK);
- }
- void gasAlarm(){
- display.fillTriangle(23,52,18,62,29,62,BLUE);
- display.setCursor(21,56);
- display.setTextColor(WHITE);
- display.print("G");
- delay(1000);
- display.fillTriangle(23,52,18,62,29,62,BLACK);
- }
- void envStatus1(){
- display.fillRoundRect(0,50,13,13,2,GREEN);
- //display.fillRect(0,57,28,7,PURPLE);
- display.fillRoundRect(15,50,13,13,2,0x6666);
- display.setCursor(19,53);
- display.setTextColor(0xFFFF);
- //display.setTextSize(2);
- display.print("G");
- delay(500);
- display.fillRect(15,50,13,13,BLACK);
- }
- void envStatus2(){
- display.fillRoundRect(0,50,13,13,2,RED);
- delay(1000);
- //display.fillRect(0,50,28,14,BLACK);
- }
- /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
- void envComfirm(){
- int h = dht.readHumidity();
- int t = dht.readTemperature();
- int f = dht.readTemperature(true);
- int fire=digitalRead(7);
- delay(1);
- if(fire==0){
- envStatus2();
- fireAlarm();
- Alarm();
- }
- if(t>17&& t<33&& fire==1){
- envStatus1();
- }
- if(t>32){
- envStatus2();
- tempAlarm();
- }
- }
- /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
- void envConsole(){
- display.fillScreen(BLACK);
- drawTittle();
- drawHead();
- drawTab();
- while(1){
- //sensorCheck();
- drawHead();
- drawTempData();
- drawDataLine();
- envComfirm();
- clearDataLine();
- //drawDataLine();
- //envComfirm();
- //clearDataLine();
- if(counter!=0) break;
- }
- }
- /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
- void clearScreen(){
- display.fillScreen(BLACK);
- }
- /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
- void showTemperature(){
- int h = dht.readHumidity();
- int t = dht.readTemperature();
- display.fillScreen(BLACK);
- drawThermo();
- display.setCursor(16,1);
- display.setTextSize(1);
- display.setTextColor(WHITE);
- display.println("TEMP");
- display.setCursor(65,1);
- display.setTextSize(1);
- display.setTextColor(PURPLE);
- display.println("M2");
- display.fillTriangle(81,4,85,0,85,8,0x6666);
- display.fillTriangle(87,0,87,8,91,4,0x6666);
- display.drawLine(0,9,96,9,0xFFFF);
- display.drawLine(0,37,68,37,0xFFFF);
- while(1){
- //sensorCheck();
- statusLt();
- int h = dht.readHumidity();
- int t = dht.readTemperature();
- display.fillRect(81,24,3,50-t,BLACK);
- display.fillRect(81,74-t,3,t-24,YELLOW);
- delay(5);
- display.setCursor(0,11);
- display.setTextColor(BLUE);
- display.setTextSize(1);
- display.println("Humidity");
- display.setCursor(0,21);
- display.setTextColor(GREEN,BLACK);
- display.setTextSize(2);
- display.print(h);
- display.println(" %");
- display.setCursor(0,39);
- display.setTextColor(RED);
- display.setTextSize(1);
- display.println("Temperature");
- display.setCursor(0,49);
- display.setTextColor(YELLOW,BLACK);
- display.setTextSize(2);
- display.print(t);
- display.println(" C");
- if(counter!=1) break;
- }
- }
- /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
- void blink(){
- while(1){
- digitalWrite(blueLed,HIGH);
- delay(200);
- digitalWrite(blueLed,LOW);
- delay(200);
- if(counter!=4) break;
- }
- }
- void Alarm(){
- for(int i=0; i<100; i++){
- digitalWrite(speaker,HIGH);
- delay(3);
- digitalWrite(speaker,LOW);
- delay(3);
- }
- delay(200);
- for(int i=0; i<100; i++){
- digitalWrite(speaker,HIGH);
- delay(3);
- digitalWrite(speaker,LOW);
- delay(3);
- }
- delay(200);
- for(int i=0; i<100; i++){
- digitalWrite(speaker,HIGH);
- delay(3);
- digitalWrite(speaker,LOW);
- delay(3);
- }
- }
- void statusLt(){
- display.fillCircle(4,4,2,RED);
- delay(500);
- display.fillCircle(4,4,2,GREEN);
- }
- /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
- void counterChange(){
- counter++;
- if(counter>3) counter=0;
- }
- void counterDown(){
- counter--;
- if(counter<0) counter=0;
- }
- void drawThermo(){
- display.drawCircle(82,56,5,0x2222);
- display.drawRoundRect(80,19,5,35,2,0x2222);
- display.fillCircle(82,56,3,YELLOW);
- display.fillRect(81,24,3,30,YELLOW);
- for(int y=51;y>21;y=y-3){
- display.drawFastHLine(78,y,2,0x2222);
- display.drawFastHLine(85,y,2,0x2222);
- }
- }
复制代码 |
|