Arduino I2C Analog OUT Karte

mit diesem Programmbeispiel für den Arduino wird die Funktion der I2C-AOUT Karte gezeigt.

 

Arduino-analog-out

unten im Bild die analog Eingabekarte und die analog Ausgabekarte.
Darüber ein Analogwertsimulator 0..10V und ein Messmodul mit dem sechs Analogsignale angezeigt werden können.

 

 

Die Analogwerte für die Kanäle 0 bis 3 können über die serielle Schnittstelle mit dem Tool „Serieller Monitor“ übergeben werden.

Im Programm werden die eingegebenen Zahlen von der seriellen Schnittstelle empfangen und auf die Analogkarte übertragen.

Demnächst mache ich ein Beispiel für die analoge Eingangskarte.

 

/* 
 ==============================================
             Test I2C-Analog OUT
 ==============================================
 
 Die Werte für die Analogkanäle können über die serielle Schnittstelle
 vorgegeben werden
 
 Kanal, Analogwert
 
 Kanal 0..3
 Wert  0.. 1023 = 10,23V
 
 */

#include <Wire.h>
#define I2C_IN_ADDR   16 >> 1 // I2C-INPUT-Addresse als 7 Bit
#define I2C_OUT_ADDR 176 >> 1 // I2C-OUTPUT-Addresse als 7 Bit

int  SEL=32;         // serielle Datenlänge
char Empfang[32];  // Epfangsdaten der seriellen Schnittstelle
byte HBy;
byte LBy;
int WERT;
int KANAL;


void setup() {
  Serial.begin(9600);       // Serielle Schnittstelle konfigurieren
  Wire.begin();               // I2C-Pins definieren
}

void loop() { 
  int i=0;
  while (Serial.available() > 0) {
    KANAL =Serial.parseInt();  
    WERT = Serial.parseInt();  
    
    Serial.println(KANAL);  
    Serial.println(WERT); 

    
    HBy = WERT / 256;        //HIGH-Byte berechnen
    LBy = WERT - HBy * 256;  //LOW-Byte berechnen
  
    Wire.beginTransmission(I2C_OUT_ADDR); // Start Übertragung zur ANALOG-OUT Karte
    Wire.write(KANAL);                    // Kanal schreiben
    Wire.write(LBy);                      // LOW-Byte schreiben
    Wire.write(HBy);                      // HIGH-Byte schreiben
    Wire.endTransmission();               // Ende
  }
}

3 Kommentare

  1. Hallo,

    klasse, danke Dir vielmals – mit so einer schnellen Antwort habe ich gar nicht gerechnet. Ich habe den Code soeben übertragen: alles gut. Damit habe ich jetzt schon mal eine gute Basis für mein Projekt.

    Dir einen schönen Abend,
    Christian

  2. Hallo,

    vielen Dank für das gute Beispiel. Ich habe mir das analog input Modul gekauft und würde mich wirklich sehr freuen, wenn hierzu ähnlich wie oben ein kurzes Beispiel veröffentlicht wird. Gibt es hierzu schon etwas – bin über jeden Schnipsel dankbar.

    Vielen Dank und ein schönes Wochenende,
    Christian

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.