Schlagwort-Archive: Arduino

In Processing den COM Port auswählen und Werte vom Arduino einlesen.

Wenn Werte vom Arduino abgerufen werden sollen muß zuerst der richtige COM Port ausgewählt werden und dann kann sich Processing damit verbinden. Für die Abfrage der Werte wird eine kurze Anfrage gesendet und der Arduino gibt den entsprechenden String zurück. Dieser wird in Processing eingelesen und dargestellt.

Hier werden als Beispiel 3 mögliche Strings ausgegeben:
1. Anfrage: n Antwort: Name des Geräts
2. Anfrage: s Antwort: Software Version
3. Anfrage: v Antwort: USB Spannung

Die USB Spannung wird ermittelt wie hier beschrieben. Dazu ist nur eine Brücke vom 3,3V Pin zum A0 Eingang notwendig.

Hier das Arduino Programm

// Arduino USB-Spannung an Processing ausgeben
//
// Matthias Busse 21.3.2017 Version 1.0
 
char wert; // Daten von der seriellen Schnittstelle
float vcc;
 
void setup() {
  Serial.begin(38400); // Baudrate
}
 
void loop() {
  vcc = 3.30 / analogRead(0) * 1023;
  while (Serial.available()) {       // Wenn serielle Daten kommen, dann lesen
    wert = Serial.read();            // Daten in wert speichern
    if (wert== 'n') {                // n: Name ausgeben
      Serial.println("USB Spannung messen");
    }
    if (wert== 's') {                // s: Software Version ausgeben
      Serial.println("Version 1.0");
    }
    if (wert== 'v') {                // v: Spannung ausgeben
      Serial.print(vcc);
      Serial.println(" V");
    }
  }
}

In Processing wird dann folgendes gemacht
Eine COM Port Auswahl mit einfachen Pfeiltasten. Dann kann man sich mit dem COM Port verbinden, die Verbindung wieder trennen oder die Liste der COM Ports neu einlesen. Der aktuelle Status wird im Feld darunter ausgegeben. Dazu wird eine einfache Button Klasse verwendet. Weiterlesen

Eine LED mit Processing schalten und den Status zurück bekommen vom Arduino

Die LED 13 auf dem Arduino Board soll nun von einem Processing Fenster aus umgeschaltet werden per Maus. Danach gibt der Arduino den Status der LED zurück in das Processing Fenster.

Das Processing Fenster reagiert einmalig auf den Mausklick in das Fenster und sendet dann abwechselnd eine 0 oder 1 an den Arduino. Dieser schaltet die LED um und gibt den LED Status als String zurück. Der String vom Arduino aus println hört mit \n auf. Das wird in Processing auch als Ende des Strings erkannt mit readStringUntil(‚\n‘).

Das Processing Text Ausgabe Feld im Windows Fenster muss erst mit einem leeren Rechteck abgedeckt werden und dann wird neuer Text drüber geschrieben.

Hier das Arduino Programm

// Arduino LED bei Mausklick umschalten
// aus einem Processing 3+ Fenster
// mit Status Rückmeldung vom Arduino
//
// Matthias Busse 19.3.2017 Version 2.0
 
char wert; // Daten von der seriellen Schnittstelle
int led = 13; // Board LED vom Arduino Uno
 
void setup() {
  pinMode(led, OUTPUT); 
  Serial.begin(38400); 
}
 
void loop() {
  while (Serial.available()) {       // Wenn serielle Daten kommen, dann lesen
    wert = Serial.read();            // Daten in wert speichern
    if (wert== '1') {                // 1 heisst einschalten
      digitalWrite(led, HIGH);       // LED einschalten
      Serial.println("LED ist an");  // Rückgabe
    }
    else {
      digitalWrite(led, LOW);        // LED ausschalten
      Serial.println("LED ist aus"); // Rückgabe
    }
  }
}

Das Processing 3.3 Programm Weiterlesen

Arduino LED mit Processing 3 per Mausklick schalten aus Windows

Die freie Processing Software kann Windows Fenster erstellen, Grafiken ausgeben, auf die Maus reagieren und mit der Seriellen Schnittstellen arbeiten.

Hier ein einfaches Beispiel in dem die Arduino LED13 parallel zum Mausklick eingeschaltet wird.

Zuerst wird das Arduino Programm übersetzt und hoch geladen auf den Uno.

// Arduino LED bei Mausklick anschalten
// aus einem Processing 3+ Fenster
//
// Matthias Busse 18.3.2017 Version 1.0
 
 
 char wert; // Daten von der seriellen Schnittstelle
 int led = 13; // Board LED vom Arduino Uno
 
 void setup() {
   pinMode(led, OUTPUT); 
   Serial.begin(38400); 
 }
 
 void loop() {
   while (Serial.available()) { // Wenn serielle Daten kommen, dann lesen
     wert = Serial.read(); // Daten in val speichern
   }
   if (wert == '1') { // bei einer 1
    digitalWrite(led, HIGH); // LED ein
   } 
   else {         // sonst
     digitalWrite(led, LOW); // LED aus
   }
 }

Dann das Processing Programm übersetzt Weiterlesen

Kapazitäten messen – das Shield von Christian

Hallo Matthias,

ich habe mich sehr über das Projekt zum Kapazitäten messen gefreut habe und es auch öfters schon benutzt.

Allerdings war es mir auf die Dauer zu mühsam das ganze immer wieder neu auf dem Steckbrett aufzubauen. Kurzerhand habe ich mich entschieden einfach ein mini „Shield“ für den Arduino Nano zu bauen.

Es ist wirklich nichts Besonderes, aber vielleicht als Idee für andere auch nützlich gerade weil es so simpel nachzubauen ist.

Im Anhang sind ein paar Fotos.

Danke und Gruß

Christian Weiterlesen

Ein Batteriemonitor für Strom und Spannung mit dem INA226 und dem Arduino Uno

Ich möchte einen Batteriemonitor bauen. Dazu muß die Batteriespannung gemessen werden mit 12V oder 24V und der entnommene oder geladene Strom. Für die Strommessung wird ein Shunt Widerstand verwendet. Für hohe Ströme von einigen Ampere bis hin zu mehreren Hundert Ampere werden Shunt Widerstände angeboten die einen Spannungsabfall von ca. 60mV bis 75 mV beim Maximalstrom haben.

Ich brauche also einen AD Wandler der -+75mV genauso gut messen kann wie 12V oder 24V. Das ist mit zwei langsamen aber hochauflösenden AD Wandlern machbar. Dazu kann man einen Spannungsteiler für 24V und eine OP Verstärker für +-75 mV vorschalten. Hierbei sind dann noch die Toleranzen der Widerstände und der OP Schaltung zu beachten. Weiterlesen

NMEA2000 Ankeralarm mit dem Arduino aufgebaut

Ein Ankeralarm hält die Ankerposition des Bootes fest und ermittelt dann kontinuierlich den Abstand zum Ankerplatz über die Nacht. Es wird ein Alarmradius eingegeben den das Boot nicht verlassen darf. Alle gehen schlafen und sollen geweckt werden, wenn der Anker nicht hält, weil z.B. der Wind stärker geworden ist, der Anker sich gelöst hat und der eingestellte maximale Ankerradius verlassen wird.

Dazu benötige ich einen GPS Empfänger (hier mein Lowrance HDS), ein NMEA2000 Netzwerk, den Arduino mit Schnittstellenplatine zur Berechnung der Positionen und dem Abstand, einen Poti um die Alarmdistanz (maximaler Ankerradius) einstellen zu können und einen Alarmtongeber (hier habe ich nur eine LED angeschlossen) der ggf. noch über ein Relais geschaltet werden kann. Weiterlesen

NMEA2000 Daten mit dem Arduino an den Actisense NMEA Reader übertragen

Actisense hat einen NMEA Reader, der die NMEA 2000 Datensätze entschlüsselt und lesbar darstellen kann. Den NMEA Reader gibt es hier.

Mit meiner MCP 2515 Platine und dem Arduino Mega 2560 werden die Daten jetzt im Actisense Format über USB an den PC gegeben und im NMEAReader dargestellt.

Hier das Programm Weiterlesen