Forum: Mikrocontroller und Digitale Elektronik Wetterstation mit RGB-LED


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Melinamell (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich studiere Wirtschaftsingenieurwesen und bin nun im dritten Semester.

In der Uni habe ich ein Semester lang Elektrotechnik gehabt, jedoch kein
Programmieren.

Nun ist unser Dozent auf die Idee gekommen, wir könnten uns das
Programmieren bis zum nächsten Semester ja mal eben selber beibringen
und eine Wetterstation bauen...

Meine Bauteile sind folgende:

- Node MCU
- DHT 22
- DS18B20
- MPL3115A2
- RGB LED

Die Hardware ist so weit fertig und ich konnte mit der Arduino IDE (ja,
viele finden die sch***e, mir bleibt derzeit aber nichts anderes über
als vollkommen ahnungslose) bereits die Sensoren einzeln und
mittlerweile auch gemeinsam auslesen. So weit so gut. Auch die 
Datenübertragung bzw. der Datenabruf über eine IP-Adresse klappt 
mittlerweile.

Meine letzte Aufgabe ist nun:

Die RGB-LED soll unter 18°C blau, über 22°C rot und dazwischen grün 
blinken.





Mein Code ist grob ohne die anderen Sensoren folgender (kann sein, dass 
ich noch was beim Löschen vergessen habe):



#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2
#define TEMPERATURE_PRECISION 9

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer;

void setup()
{
 Serial.begin(115200);

 sensors.getAddress(insideThermometer, 0);
 sensors.setResolution(insideThermometer, TEMPERATURE_PRECISION);

 Wire.begin();
 sensors.begin();
}


void loop()
{
 delay(500);

 sensors.requestTemperatures();
 float tempC = sensors.getTempC(insideThermometer);

 Serial.print("Temperature(DS1820): ");
 Serial.print(tempC);
 Serial.println("*C ");
}



die RGB-LED zum blinken bekomme ich damit:



int redPin = D5, greenPin = D6, bluePin = D8;

void setup()
{
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}

void loop()
{
  digitalWrite(redPin, LOW);
  delay(500);
  digitalWrite(redPin, HIGH);
  delay(500);
  digitalWrite(greenPin, LOW);
  delay(500);
  digitalWrite(greenPin, HIGH);
  delay(500);
  digitalWrite(bluePin, LOW);
  delay(500);
  digitalWrite(bluePin, HIGH);
  delay(500);
 }


Ich habe mein Glück versucht, die RGB-LED je nach Temperatur blinken zu 
lassen, aber es nicht geschafft.. Ich hoffe sehr, dass ihr mir helfen 
könnt!

Ich danke euch bereits im Voraus und bitte auch noch einmal zu bedenken,
dass ich eine absolute Anfängerin bin. Also bitte Verständnis dafür
zeigen :)

Liebe Grüße,
Melina

: Verschoben durch Moderator
von Martin K. (maart)


Bewertung
1 lesenswert
nicht lesenswert
Du musst also testen, in welchem Bereich die Temperatur liegt und 
dementsprechend die "richtige" LED blinken lassen.

Schaue dir mal if..then...else if... an.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.