Staubsensor-lcd.ino: Unterschied zwischen den Versionen

Aus WiebelPedia
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „<pre> #include <SoftwareSerial.h> #include <LiquidCrystal.h> LiquidCrystal lcd(8, 9, 4, 5, 6, 7); SoftwareSerial mySerial1(11,12); // RX, TX, Connect dust se…“)
 
(kein Unterschied)

Aktuelle Version vom 15. März 2018, 21:56 Uhr


#include <SoftwareSerial.h>
#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
SoftwareSerial mySerial1(11,12); // RX, TX, Connect dust sensor to these pins

long pmcf10=0;
long pmcf25=0;
long pmcf100=0;
long pmat10=0;
long pmat25=0;
long pmat100=0;
int counter=0;

char buf[50];

void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
mySerial1.begin(9600);
lcd.begin(16, 2);
lcd.print("1.0   2.5   10.0");
}

void loop() {
// put your main code here, to run repeatedly:
int count = 0;
unsigned char c;
unsigned char high;
while (mySerial1.available()) {
c = mySerial1.read();
if((count==0 && c!=0x42) || (count==1 && c!=0x4d)){
Serial.println("check failed");
break;
}
if(count > 15){
Serial.println("complete");
break;
}
else if(count == 4 || count == 6 || count == 8 || count == 10 || count == 12 || count == 14) high = c;
else if(count == 5){
pmcf10 = 256*high + c;
}
else if(count == 7){
pmcf25 = 256*high + c;
}
else if(count == 9){
pmcf100 = 256*high + c;
}
else if(count == 11){
pmat10 = 256*high + c;
}
else if(count == 13){
pmat25 = 256*high + c;
}
else if(count == 15){
pmat100 = 256*high + c;
}
count++;
}
while(mySerial1.available()) mySerial1.read();
Serial.println();
lcd.setCursor(0, 1);
if(pmcf10 < 1000) lcd.print("0");
if(pmcf10 < 100) lcd.print("0");
if(pmcf10 < 10) lcd.print("0");
lcd.print(pmcf10);
lcd.print("-");
lcd.setCursor(5, 1);
if(pmcf25 < 10000) lcd.print("0");
if(pmcf25 < 1000) lcd.print("0");
if(pmcf25 < 100) lcd.print("0");
if(pmcf25 < 10) lcd.print("0");
lcd.print(pmcf25);
lcd.print("-");
lcd.setCursor(11, 1);
if(pmcf100 < 10000) lcd.print("0");
if(pmcf100 < 1000) lcd.print("0");
if(pmcf100 < 100) lcd.print("0");
if(pmcf100 < 10) lcd.print("0");
lcd.print(pmcf100);

if(counter==0){
 lcd.setCursor(10, 0);
 lcd.print("-");
 lcd.setCursor(4, 0);
 lcd.print("-");
 counter=1;
}else{
 lcd.setCursor(10, 0);
 lcd.print("|"); 
 lcd.setCursor(4, 0);
 lcd.print("|");
 counter=0; 
}

Serial.print("CF=1, PM1.0=");
Serial.print(pmcf10);
Serial.println(" ug/m3");

Serial.print("CF=1, PM2.5=");
Serial.print(pmcf25);
Serial.println(" ug/m3");

Serial.print("CF=1, PM10=");
Serial.print(pmcf100);
Serial.println(" ug/m3");

Serial.print("atmosphere, PM1.0=");
Serial.print(pmat10);
Serial.println(" ug/m3");

Serial.print("atmosphere, PM2.5=");
Serial.print(pmat25);
Serial.println(" ug/m3");

Serial.print("atmosphere, PM10=");
Serial.print(pmat100);
Serial.println(" ug/m3");

delay(1000);
}