Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
www-fuer-alle:co2-ampel [2020/11/21 21:25] – [Programmcode] bieblwww-fuer-alle:co2-ampel [2021/12/04 16:16] (aktuell) – [CO2-Ampel] biebl
Zeile 3: Zeile 3:
   * [[www-fuer-alle:arduino|SAS-Projekte: Arduino ab Klasse 8]]   * [[www-fuer-alle:arduino|SAS-Projekte: Arduino ab Klasse 8]]
   * Fragen und Anregungen: [[ARDUINO@GymSAS.de]]   * Fragen und Anregungen: [[ARDUINO@GymSAS.de]]
 +  * [[https://www.cik-solutions.com/anwendungen/co2-im-innenraum/|Co2-Werte und Bedeutung]]
 +  * [[info:arduino:iot-co2-ampelprojekt|intern]]
 ===== Varianten ===== ===== Varianten =====
  
Zeile 12: Zeile 14:
   * LEDs, BUZZER, OLED-Anzeige und SD-Speicher (und UHR)   * LEDs, BUZZER, OLED-Anzeige und SD-Speicher (und UHR)
   * LEDs, BUZZER, OLED-Anzeige und WLAN-Anbindung an einen Raspi mit Datenbank und Apache   * LEDs, BUZZER, OLED-Anzeige und WLAN-Anbindung an einen Raspi mit Datenbank und Apache
 +
 +  * [[https://www.youtube.com/watch?v=-zFD7MYOmb4|Weiterentwicklung der CO2-Ampel]]
 +  * [[https://www.heinz-schmitz.org/index.php/hiz-nachrichtenleser/hiz323.html|Materialien]]
 ===== fertige Ampel - LED mit Buzzer und OLED-Anzeige (ohne UHR und SD-Karte)===== ===== fertige Ampel - LED mit Buzzer und OLED-Anzeige (ohne UHR und SD-Karte)=====
  
-{{:www-fuer-alle:co2-nano-oled-2.jpg?300|}}+{{:www-fuer-alle:co2-nano-oled-2.jpg?300|}}{{:www-fuer-alle:arduino-co2-nano.jpg?200|}}
  
   * Nano 5 €   * Nano 5 €
Zeile 33: Zeile 38:
  
   * HD über einen Taster oder ein Steckkabel an Masse zur Kalibrierung   * HD über einen Taster oder ein Steckkabel an Masse zur Kalibrierung
 +
 +===== Messbeispiel =====
 +
 +
 +{{:www-fuer-alle:2020-12-10-co2-messung-klausur.png?400|}}
  
 ===== Breadboardvariante ===== ===== Breadboardvariante =====
Zeile 62: Zeile 72:
 File Messdaten;                                            // An dieser Stelle wird die Variable "Messdaten" als File (dts. Datei) deklariert. File Messdaten;                                            // An dieser Stelle wird die Variable "Messdaten" als File (dts. Datei) deklariert.
  
-int z = 0;+int z = 0;                                                 // globale Zaehlvariable für die SD-Kartennutzung in der loop 
 /************************************************ /************************************************
   für den Betrieb der LED-Anzeige und Summer  *   für den Betrieb der LED-Anzeige und Summer  *
Zeile 113: Zeile 124:
     oled.println(" ------------");     oled.println(" ------------");
     oled.println(" SAS-Projekt 2020");     oled.println(" SAS-Projekt 2020");
 +    tone(summer,444);
 +    // delay(20);
 +    noTone;
 +       
  
 /************************************** /**************************************
Zeile 122: Zeile 137:
    pinMode(rot, OUTPUT);    pinMode(rot, OUTPUT);
    pinMode(blau, OUTPUT);    pinMode(blau, OUTPUT);
-   tone(summer,600); +   noTone;
-   delay(2000);+
    ledTest();    ledTest();
    Serial.begin(9600);       Serial.begin(9600);   
Zeile 171: Zeile 185:
                                                                  
         Serial.write(Messdaten.read());                        // ... bis keine Daten mehr gefunden werden können.         Serial.write(Messdaten.read());                        // ... bis keine Daten mehr gefunden werden können.
 +        digitalWrite(blau, HIGH);
 +        digitalWrite(blau, LOW);
 +        
        }        }
      Messdaten.close();                                        // Im Anschluss wird die Textdatei wieder geschlossen.      Messdaten.close();                                        // Im Anschluss wird die Textdatei wieder geschlossen.
Zeile 178: Zeile 195:
     Serial.println("Textdatei konnte nicht geoeffnet werden"); // ... erscheint eine Fehlermeldung im seriellen Monitor.     Serial.println("Textdatei konnte nicht geoeffnet werden"); // ... erscheint eine Fehlermeldung im seriellen Monitor.
     }     }
 +    digitalWrite(blau, LOW);
  
 /************************************** /**************************************
Zeile 186: Zeile 204:
  
 }                                                              // ENDE Setup }                                                              // ENDE Setup
 +
 +/***********************************************************************************************************************
 +*
 +* LOOP
 +*
 +***********************************************************************************************************************/
  
 void loop() { void loop() {
   z = z+1;                                                     z = z+1;                                                  
   ppm_pwm = readCO2PWM();                                      // Messung der PWM-Länge mittels einer eigenen Funktion   ppm_pwm = readCO2PWM();                                      // Messung der PWM-Länge mittels einer eigenen Funktion
-  if (z > 4) {                                                 // erst die 5. Messung wird gesichert+  if (z > 4) {                                                 // erst die 5. Messung wird gesichert, dann ca. pro Minute eine
     messWertSchreibenSD();                                     // jeden 5. Messwert auf die SD-Karte schreiben (blaue LED)     messWertSchreibenSD();                                     // jeden 5. Messwert auf die SD-Karte schreiben (blaue LED)
     z = 0;                                                     // Zaehler zurueck setzen     z = 0;                                                     // Zaehler zurueck setzen
   }   }
   oledAnzeige();                                               // Messwerte auf dem OLED ausgeben   oledAnzeige();                                               // Messwerte auf dem OLED ausgeben
-  delay(schreibPause);                                                // PAUSE: nächste Messungen in 12 Sekunden+  delay(schreibPause);                                         // PAUSE: nächste Messungen in 12 Sekunden (ca. 5 Messungen pro Minute)
 } }
 +
 +/************************************************************************************************************************
 +*
 +* LOOP ENDE
 +*
 +************************************************************************************************************************/
 +
 +/*********************************
 +*                                *
 +* Funktionen und Prozeduren      *
 +*                                *
 +*********************************/
  
 /********************************************************************************************************** /**********************************************************************************************************
Zeile 276: Zeile 312:
   oled.println(now.minute(), DEC);   oled.println(now.minute(), DEC);
   ledRot();   ledRot();
-  if (ppm_pwm < guteLuft)          { ledGruen(); }+  ledGruen();
   if (ppm_pwm > mittlereQualitaet) { ledGelb(); }   if (ppm_pwm > mittlereQualitaet) { ledGelb(); }
   if (ppm_pwm > schlechteLuft)     { ledRot();    if (ppm_pwm > schlechteLuft)     { ledRot(); 
Zeile 295: Zeile 331:
            digitalWrite(gelb, HIGH);            digitalWrite(gelb, HIGH);
            digitalWrite(rot, HIGH);            digitalWrite(rot, HIGH);
 +           digitalWrite(blau, LOW); 
 +           delay(600);
            digitalWrite(blau, HIGH);             digitalWrite(blau, HIGH); 
 +           delay(100);       
 +           digitalWrite(gruen, LOW);
 +           digitalWrite(gelb, LOW);
 +           digitalWrite(rot, LOW);
 +           digitalWrite(blau, LOW);            
            noTone(summer);            noTone(summer);
 } }
QR-Code
QR-Code www-fuer-alle:co2-ampel (erstellt für aktuelle Seite)