/**************************************************************************/
/*
In diesem Beispiel wird mit dem D>A_Converter MCP4725 ein Poti auf A0 ausgelesen
und auf den Ausgang als Spannung 0-5 Volt ausgegeben
Dies ist eine von mir geänderte Beispielskizze
für das Breakout Board Adafruit MCP4725
----> http://www.adafruit.com/products/935
Adafruit investiert Zeit und Ressourcen, um diesen Open-Source-Code bereitzustellen.
Bitte unterstützen Sie Adafruit und Open-Source-Hardware durch den Kauf
Produkte von Adafruit!
5 KiloOhm Poti zwischen GND und VCC 5V und Mittelabgriff auf PIN A3
*/
/**************************************************************************/
#include <Wire.h>
#include <Adafruit_MCP4725.h>
Adafruit_MCP4725 dac;
#include <LiquidCrystal_I2C.h> // LCD Display
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
int ANALOG_PIN = A0; // Hier wird der Name Steuereingang festgelegt
int a31 = 0; // Der Speicher für den ausgelesenen Analogwert vom Poti
int a32 = 0; // Der Speicher für den ausgegebenen Analogwert zum DA Wandler
int a32alt = 10; // Vergleichspeicher ob es neue Werte gibt
unsigned long Anzeigepause = 500;
unsigned long Pausestartzeit = 0;
//====================================================================================
void setup(void) {
// For Adafruit MCP4725A1 the address is 0x62 (default) or 0x63 (ADDR pin tied to VCC)
// For MCP4725A0 the address is 0x60 or 0x61
// For MCP4725A2 the address is 0x64 or 0x65
dac.begin(0x60); // Meine MCP4725 haben die I2C-Adresse 0x60
pinMode(ANALOG_PIN, INPUT); // Poti Input
lcd.begin(20, 4);
lcd.backlight();
lcd.clear();
lcd.setCursor (0, 0);
lcd.print ("Auslesewert");
lcd.setCursor (0, 1);
lcd.print ("Ausgabewert");
}
//===================================================================================
void loop(void) {
a31 = analogRead (ANALOG_PIN); // Analogen Eingang A3 (Poti) auslesen
a32 = map(a31, 0, 1023, 0, 4095); //Ausgabewerte für MCP4725 anpassen
if (a32 != a32alt) { // Hat sich der Wert verändert, dann geben ich den neuen Wert aus
a32alt = a32; // Wert "a3alt" für den nächste Vergleich aktuallisieren
dac.setVoltage(a32, false); // Wert ausgeben
if (millis() - Pausestartzeit >= Anzeigepause) { // Anzeigeänderung nur alle 500ms
lcd.setCursor (13, 0);
lcd.print (" ");
lcd.setCursor (13, 0);
lcd.print (a31);
lcd.setCursor (13, 1);
lcd.print (" ");
lcd.setCursor (13, 1);
lcd.print (a32);
Pausestartzeit = millis();
}
}
}