Benutzer-Werkzeuge

Webseiten-Werkzeuge


arduino:wasserstandsanzeiger

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
arduino:wasserstandsanzeiger [07.05.2016 18:11] Frickelpietarduino:wasserstandsanzeiger [18.05.2023 12:15] (aktuell) – Externe Bearbeitung 127.0.0.1
Zeile 2: Zeile 2:
 Nachdem meine im letzten Jahr gebastelten analogen Wasserstandsanzeiger nicht lange funktioniert haben und ich von der Fehlersuche bei meinem [[3d-druck:hexagon_v2|Hexagon V2]] noch ein Arduino Due übrig habe, gehe ich die Angelegenheit in diesem Jahr mikroprozessorgesteuert an. Nachdem meine im letzten Jahr gebastelten analogen Wasserstandsanzeiger nicht lange funktioniert haben und ich von der Fehlersuche bei meinem [[3d-druck:hexagon_v2|Hexagon V2]] noch ein Arduino Due übrig habe, gehe ich die Angelegenheit in diesem Jahr mikroprozessorgesteuert an.
  
-Der Wasserstand wird analog mit einem bei Ebay gekauften Sensor gemessenIn einem ersten Schritt wird es darum gehenden Code zu schreiben, um einen analogen Pin auszulesenSpäter soll der Wasserstand auf einem LCD-Display angezeigt werden.+Um den Wasserstand zu messen werden zwei analoge Sensoren verwendet, die ich bei Ebay erstanden habeDer Arduino Due hat 12 analoge Eingängetheoretisch ließen sich also zehn weitere Sensoren anschließenDie Ausgabe erfolgt auf ein [[arduino:adafruit_rgb_lcd_shield|LC-Display]].
  
-Analoge Signale lesenhttps://www.arduino.cc/en/Reference/AnalogRead+ 
 +===== Code ===== 
 +Das Programm zeigt beim Start die Versionsnummer an. Anschließend werden zwei analoge Eingänge ausgelesen und jeweils in eine Variable geschrieben. Die Werte werden an die serielle Schnittstelle ausgegeben. Auf dem LCD-Display wird der Wasserstand in Worten angezeigt (high, good, low). Abhängig vom Wasserstand wird die Farbe der Hintergrundbeleuchtung des Displays verändert. 
 + 
 +Was noch zu erledigen wäre: 
 +  * Die Interpretation der Messwerte an den analogen Eingängen muss noch an die Sensoren angepasst werden. (Die sind aber noch unterwegs.) 
 +  * Das LCD flackert jetzt einmal pro Sekunde. Das sieht nicht schön aus. Die Anzeige müsste eigentlich nur gelöscht werden, wenn sie sich geändert hat. 
 + 
 +<code> 
 +// include the library code: 
 +#include <Wire.h> 
 +#include <Adafruit_RGBLCDShield.h> 
 +#include <utility/Adafruit_MCP23017.h> 
 + 
 +Adafruit_RGBLCDShield lcd = Adafruit_RGBLCDShield(); 
 + 
 +// These #defines make it easy to set the backlight color 
 +#define RED 0x1 
 +#define YELLOW 0x3 
 +#define GREEN 0x2 
 +#define TEAL 0x6 
 +#define BLUE 0x4 
 +#define VIOLET 0x5 
 +#define WHITE 0x7 
 + 
 +// Defines the input pins 
 +int analogPin1 = 3;      
 +int val1 = 0;           // variable to store the value read 
 +int analogPin2 = 4;      
 +int val2 = 0;           // variable to store the value read 
 + 
 + 
 +void setup() { 
 +  Serial.begin(9600);                 // Debugging output 
 +  lcd.begin(16, 2);                   // set up the LCD's number of columns and rows 
 +  lcd.setCursor(0, 0); 
 +  lcd.print("WaterLevelMeter");       // prints the progam name to the LCD 
 +  lcd.setCursor(0, 1); 
 +  lcd.print("V 0.1 alpha");     // prints the version number to the LCD 
 +  lcd.setBacklight(WHITE);            // set up the LCD's display color 
 +  delay(1000);                        // 1 Sek Pause 
 +
 + 
 + 
 +void loop() { 
 +  lcd.clear(); 
 +  val1 = analogRead(analogPin1);    // read the input pin 
 +  val2 = analogRead(analogPin2);    // read the input pin 
 + 
 +  Serial.println("Level 1");       // debug value 
 +  Serial.println(val1);             // debug value 
 +  lcd.setCursor(0, 0); 
 +  lcd.print("Level 1: "); 
 +    if(val1 < 100) 
 +      lcd.print("high"); 
 +    if(val1 < 300) 
 +      lcd.print("good"); 
 +    else{ 
 +      lcd.print("low"); 
 +  }   
 + 
 +  Serial.println("Level 2");       // debug value 
 +  Serial.println(val2);             // debug value 
 +  lcd.setCursor(0, 1); 
 +  lcd.print("Level 2: "); 
 +    if(val2 < 100) 
 +      lcd.print("high"); 
 +    if(val2 < 300) 
 +      lcd.print("good"); 
 +    else{ 
 +      lcd.print("low"); 
 +  } 
 + 
 +  if(val1 < 100 || val2 < 100) 
 +    lcd.setBacklight(GREEN); 
 +  if(val1 < 300 || val2 < 300) 
 +    lcd.setBacklight(YELLOW); 
 +  if(val1 > 301 || val2 > 301) 
 +    lcd.setBacklight(RED); 
 +   
 +  delay(1000);                    // 1 Sek Pause 
 +  } 
 +   
 +</code>
  
 Tags: #Arduino Tags: #Arduino
arduino/wasserstandsanzeiger.1462637463.txt.gz · Zuletzt geändert: 18.05.2023 09:06 (Externe Bearbeitung)