Arduino I2C Analog IN Karte

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

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.

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.

Im Beispielprogramm werden jede Sekunde die 4 Analogwerte von der I2C-Analog-Eingangskarte gelesen und über der seriellen Monitor ausgegeben.

 

/* 
 ==============================================
             Test I2C-Analog IN
==============================================

 Von der Analogwerte werden 11 Bytes gelesen und in 
 ein Array abgelegt. 
 
 Byte 0   Zeiger
 Byte 1   Analogwert 0 Low Byte
 Byte 2   Analogwert 0 High Byte
 Byte 3   Analogwert 1 Low Byte
 Byte 4   Analogwert 1 High Byte
 Byte 5   Analogwert 2 Low Byte
 Byte 6   Analogwert 2 High Byte
 Byte 7   Analogwert 3 Low Byte
 Byte 8   Analogwert 3 High Byte
 Byte 9   Analogwert 4 Low Byte
 Byte 10  Analogwert 4 High Byte

 Anschließend werden die die Analogwerte berechnet und
 an die serielle Schnittstelle geschrieben.
 */

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

int AIN_1[11];         // Array mit 11 Werten anlegen
int i;
int Analogwert[4];     // Analogwerte Kanal 0-4


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

void loop() {

  // 11 Bytes von Analogkarte lesen
  Wire.requestFrom(I2C_IN_ADDR, 11); 

  //  Werte in Array kopieren
  for(i=0;i<11;i++)                  
  {
  int c = Wire.read();
  AIN_1[i]=c;
  }

  // Werte berechnen. Analogwert = Highbyte * 256 + Lowbyte 
  Analogwert[0] = AIN_1[2] * 256 + AIN_1[1];
  Analogwert[1] = AIN_1[4] * 256 + AIN_1[3];
  Analogwert[2] = AIN_1[6] * 256 + AIN_1[5];
  Analogwert[3] = AIN_1[8] * 256 + AIN_1[7];
  Analogwert[4] = AIN_1[10] * 256 + AIN_1[9];
 
 
  // Werte auf die serielle Schnittstelle ausgeben
  Serial.print ("Kanal 0 = ");  Serial.println(Analogwert[0]);
  Serial.print ("Kanal 1 = ");  Serial.println(Analogwert[1]);
  Serial.print ("Kanal 2 = ");  Serial.println(Analogwert[2]);
  Serial.print ("Kanal 3 = ");  Serial.println(Analogwert[3]);
  Serial.print ("Kanal 4 = ");  Serial.println(Analogwert[4]);
  Serial.println("=============");
  
  // 1 Sekunde warten
  delay(1000);              
}

 

So sieht es dann am „Serial Monitor“ aus.

Analogwerte am Serial Monitor

Analogwerte am Serial Monitor

 

Schreibe einen Kommentar

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