inf unf prog aufgabe/mitschrieb

This commit is contained in:
danielvici123
2025-02-26 12:29:59 +01:00
parent 167b5c6b7d
commit 9fe7475075
7 changed files with 319 additions and 4 deletions

View File

@@ -9,18 +9,20 @@ void setup() {
void loop() {
// Daten senden
// 0b um in 0 und 1 zu schreiben ansonsten Hex
// 0111 <- absch. 0000 <- Jumper ablesen
Wire.beginTransmission(0b0111000);
// 0111 <- absch. 0000 <- Jumper
Serial.begin(115200);
Wire.beginTransmission(0b0111101);
//Wire.write(0b00001111); // da LED LOW Active 0->AN, 1->AUS; mann muss 8 Bits machen
//Wire.endTransmission();
delay(500);
// Daten empfangen
byte Daten1; // 1 Byte deklarieren
Wire.requestFrom(0b0100110, 1);
Wire.requestFrom(0b1001010, 1);
if (Wire.available() >= 1){
Daten1 = Wire.read(); // Daten lesen
Wire.write(Daten1);
//Wire.write(Daten1);
Serial.println(Daten1);
}
Wire.endTransmission();
}

28
INF/i2c_lm75/i2c_lm75.ino Normal file
View File

@@ -0,0 +1,28 @@
#include "Wire.h"
// absch -> Abschreiben
void setup() {
Wire.begin();
Serial.begin(115200);
}
void loop() {
// Daten senden
// 0b um in 0 und 1 zu schreiben ansonsten Hex
// 0111 <- absch. 0000 <- Jumper
Wire.beginTransmission(0b0111101);
//Wire.write(0b00001111); // da LED LOW Active 0->AN, 1->AUS; mann muss 8 Bits machen
//Wire.endTransmission();
delay(500);
// Daten empfangen
byte Daten1; // 1 Byte deklarieren
Wire.requestFrom(0b1001010, 1);
if (Wire.available() >= 1){
Daten1 = Wire.read(); // Daten lesen
//Wire.write(Daten1);
Serial.println(Daten1);
}
Wire.endTransmission();
}

View File

@@ -0,0 +1,83 @@
/* INFP-Übungen zum I2C-Bus - https://kurzelinks.de/wvs_esp_12
* Benötigte Bibliotheken
* Wire.h (integriert)
* die 2 Bibliotheken müssen in Arduino noch hinzugefügt werden:
* https://github.com/ThingPulse/esp8266-oled-ssd1306
* https://github.com/johnrickman/LiquidCrystal_I2C
* Fügt zur Schaltung das Bauteil "LCD 16x2 (I2C)" hinzu und ergänzt
* die Verdrahtung. Danach die Serial.print-Ausgaben ersetzten durch
* Ausgaben auf dem Text-Display
* Gute Zusammenfassung zum Display
* https://docs.wokwi.com/parts/wokwi-lcd1602
* https://sprut.de/electronic/lcd/index.htm
*/
#include <Wire.h>
#include "SSD1306Wire.h"
#include <LiquidCrystal_I2C.h> // Die Bibliothek muss noch installiert werden!
//***** Portpins für Ein-/Ausgänge ***************************************
const int Enc_A = 34, Enc_B = 35, Enc_Taster = 0, NEO_Pin=26;
const int LED_rot = 32, LED_gruen = 33, Taster2 = 2, Taster4 = 4;
//***** Objekt für Displays anlegen
SSD1306Wire display(0x3c, SDA, SCL);
LiquidCrystal_I2C lcd(0x27, 16, 2); // Display mit 2 Zeilen, 16 Zeichen, I2C-Adresse 0x27 (PCF8574!)
// ***** Globale Variablen ************************************************
bool T2_neu, T2_alt, T4_neu, T4_alt; // für Flankenerkennung
unsigned long currentMillis, nextMillis;
int Digitalwert;
// ***** Initialisierung **************************************************
void setup() {
Serial.begin(115200); // Serielle Schnittstelle mit 115200Bit/s
pinMode(LED_rot, OUTPUT); // die LEDs beginnen danach
pinMode(LED_gruen, OUTPUT); // zu leuchten!
digitalWrite(LED_rot, HIGH); // also beide ausschalten
digitalWrite(LED_gruen, HIGH);
pinMode(Taster2, INPUT_PULLUP); // Taster brauchen hier den
pinMode(Taster4, INPUT_PULLUP); // Pullup-Widerstand
// SSD1306 Display initialisieren
display.init();
display.flipScreenVertically();
display.setContrast(255);
display.setFont(ArialMT_Plain_16);
// I2C Textdisplay 1602 initialisieren, Text ausgeben
// siehe Arduino-Beispiel "Hello World"
lcd.init();
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(0,0);
lcd.print("danielvici.com");
}
// ***** Endlosschleife ***************************************************
void loop() {
currentMillis = millis( );
if ( currentMillis >= nextMillis ) {
nextMillis = currentMillis + 1000; // 1x pro Sekunde Messen
Digitalwert = analogRead(A0); // Poti einlesen
Serial.printf("Digitalwert: %d\n", Digitalwert);
display.clear();
display.drawString(16, 8, "Digitalwert");
char buf[5];
sprintf(buf, "%4d", Digitalwert);
display.drawString(16, 32, buf);
display.display( );
}
// Flankenerkennung, Anmerkung: die Taster in Wokwi können mit prellen
// konfiguriert werden, so dass die LED manchmal mehrfach umschaltet
// -> also auch hier kann entprellen getestet werden.
T2_neu = digitalRead(Taster2);
if ( T2_neu == 0 && T2_alt == 1) { // fallende Flanke = Tastendruck
digitalWrite(LED_rot, !digitalRead(LED_rot)); // toggeln
}
T2_alt = T2_neu; // für Flankenerkennung
}
// ***** Eigene Funktionen ************************************************