inf unf prog aufgabe/mitschrieb
This commit is contained in:
@@ -9,18 +9,20 @@ void setup() {
|
|||||||
void loop() {
|
void loop() {
|
||||||
// Daten senden
|
// Daten senden
|
||||||
// 0b um in 0 und 1 zu schreiben ansonsten Hex
|
// 0b um in 0 und 1 zu schreiben ansonsten Hex
|
||||||
// 0111 <- absch. 0000 <- Jumper ablesen
|
// 0111 <- absch. 0000 <- Jumper
|
||||||
Wire.beginTransmission(0b0111000);
|
Serial.begin(115200);
|
||||||
|
Wire.beginTransmission(0b0111101);
|
||||||
//Wire.write(0b00001111); // da LED LOW Active 0->AN, 1->AUS; mann muss 8 Bits machen
|
//Wire.write(0b00001111); // da LED LOW Active 0->AN, 1->AUS; mann muss 8 Bits machen
|
||||||
//Wire.endTransmission();
|
//Wire.endTransmission();
|
||||||
delay(500);
|
delay(500);
|
||||||
|
|
||||||
// Daten empfangen
|
// Daten empfangen
|
||||||
byte Daten1; // 1 Byte deklarieren
|
byte Daten1; // 1 Byte deklarieren
|
||||||
Wire.requestFrom(0b0100110, 1);
|
Wire.requestFrom(0b1001010, 1);
|
||||||
if (Wire.available() >= 1){
|
if (Wire.available() >= 1){
|
||||||
Daten1 = Wire.read(); // Daten lesen
|
Daten1 = Wire.read(); // Daten lesen
|
||||||
Wire.write(Daten1);
|
//Wire.write(Daten1);
|
||||||
|
Serial.println(Daten1);
|
||||||
}
|
}
|
||||||
Wire.endTransmission();
|
Wire.endTransmission();
|
||||||
}
|
}
|
||||||
|
|||||||
28
INF/i2c_lm75/i2c_lm75.ino
Normal file
28
INF/i2c_lm75/i2c_lm75.ino
Normal 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();
|
||||||
|
}
|
||||||
83
INF/led-display/led-display.ino
Normal file
83
INF/led-display/led-display.ino
Normal 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 ************************************************
|
||||||
|
|
||||||
40
progp/25-2-26 - class/lehrer-class.php
Normal file
40
progp/25-2-26 - class/lehrer-class.php
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
<?php
|
||||||
|
class Lehrer extends Person{
|
||||||
|
// Attribute (Member)
|
||||||
|
private int $gehaltsstufe;
|
||||||
|
|
||||||
|
// spezieller (parametrisierter) Konstruktor
|
||||||
|
public function __construct(string $vn, string $nn, int $gs) {
|
||||||
|
parent::__construct($vn, $nn);
|
||||||
|
$this->setGehaltsstufe($gs);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Öffentliche Zugriffsfunktionen
|
||||||
|
// Setter
|
||||||
|
public function setGehaltsstufe(int $gs): void {
|
||||||
|
$this->gehaltsstufe = $gs;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getter
|
||||||
|
public function getGehaltsstufe(): int {
|
||||||
|
return $this->gehaltsstufe;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sonstige Funktionen
|
||||||
|
public function ausgabe() {
|
||||||
|
echo "<p>";
|
||||||
|
echo "Vorname: $this->vorname<br>";
|
||||||
|
echo "Nachname: $this->nachname<br>";
|
||||||
|
echo "Gehaltsstufe: A$this->gehaltsstufe";
|
||||||
|
echo "</p>";
|
||||||
|
}
|
||||||
|
|
||||||
|
public function befoerdern():bool{
|
||||||
|
if($this->gehaltsstufe < 16){
|
||||||
|
$this->gehaltsstufe++;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
61
progp/25-2-26 - class/lehrer-test.php
Normal file
61
progp/25-2-26 - class/lehrer-test.php
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Document</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<?php
|
||||||
|
ini_set("display_errors", "on");
|
||||||
|
require_once "lehrer-class.php";
|
||||||
|
require_once "schueler-class.php";
|
||||||
|
require_once "personen-class.php";
|
||||||
|
|
||||||
|
// --------------------
|
||||||
|
// L E H R E R T E S T
|
||||||
|
// --------------------
|
||||||
|
|
||||||
|
echo "<h2>Lehrer</h2>";
|
||||||
|
$l = new Lehrer("Michael", "Staudt", 13);
|
||||||
|
$l->ausgabe();
|
||||||
|
if($l->befoerdern()){
|
||||||
|
echo "<p>Beförderung erfolgreich!</p>";
|
||||||
|
echo "Neue Stufe: ".$l->getGehaltsstufe()."</p>";
|
||||||
|
}else {
|
||||||
|
echo "<p>Beförderung nicht erfolgreich, da höchste Stufe erreicht</p>";
|
||||||
|
}
|
||||||
|
|
||||||
|
// $l->ausgabe();
|
||||||
|
$l->befoerdern(); // A15
|
||||||
|
$l->befoerdern(); // A16
|
||||||
|
$l->befoerdern(); // A17
|
||||||
|
$l->befoerdern(); // A18
|
||||||
|
|
||||||
|
// A18 -> A19
|
||||||
|
if($l->befoerdern()){
|
||||||
|
echo "<p>Beförderung erfolgreich!</p>";
|
||||||
|
echo "Neue Stufe: ".$l->getGehaltsstufe()."</p>";
|
||||||
|
}else {
|
||||||
|
echo "<p>Beförderung nicht erfolgreich, da höchste Stufe erreicht</p>";
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------------------------
|
||||||
|
// S C H U E L E R T E S T
|
||||||
|
// ------------------------
|
||||||
|
|
||||||
|
echo "<h2>Schüler</h2>";
|
||||||
|
$s = new Schueler("daniel", "vici123", "2BKI1");
|
||||||
|
$s->ausgabe();
|
||||||
|
|
||||||
|
// --------------------
|
||||||
|
// P E R S O N T E S T
|
||||||
|
// --------------------
|
||||||
|
|
||||||
|
echo "<h2>Personen</h2>";
|
||||||
|
$p = new Person("danielvici", "123");
|
||||||
|
$p->ausgabe();
|
||||||
|
|
||||||
|
?>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
42
progp/25-2-26 - class/personen-class.php
Normal file
42
progp/25-2-26 - class/personen-class.php
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
class Person {
|
||||||
|
// Attribute (Member)
|
||||||
|
private string $vorname;
|
||||||
|
private string $nachname;
|
||||||
|
|
||||||
|
|
||||||
|
// spezieller (parametrisierter) Konstruktor
|
||||||
|
public function __construct(string $vn, string $nn) {
|
||||||
|
$this->setVorname($vn);
|
||||||
|
$this->setNachname($nn);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Öffentliche Zugriffsfunktionen
|
||||||
|
// Setter
|
||||||
|
public function setVorname(string $vn): void {
|
||||||
|
$this->vorname = $vn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setNachname(string $nn): void {
|
||||||
|
$this->nachname = $nn;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getter
|
||||||
|
public function getVorname(): string {
|
||||||
|
return $this->vorname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getNachname(): string {
|
||||||
|
return $this->nachname;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sonstige Funktionen
|
||||||
|
public function ausgabe() {
|
||||||
|
echo "<p>";
|
||||||
|
echo "Vorname: $this->vorname<br>";
|
||||||
|
echo "Nachname: $this->nachname<br>";
|
||||||
|
echo "</p>";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
?>
|
||||||
59
progp/25-2-26 - class/schueler-class.php
Normal file
59
progp/25-2-26 - class/schueler-class.php
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
<?php
|
||||||
|
class Schueler {
|
||||||
|
// Attribute (Member)
|
||||||
|
private string $vorname;
|
||||||
|
private string $nachname;
|
||||||
|
private string $klasse;
|
||||||
|
|
||||||
|
// spezieller (parametrisierter) Konstruktor
|
||||||
|
public function __construct(string $vn, string $nn, string $kl) {
|
||||||
|
$this->setVorname($vn);
|
||||||
|
$this->setNachname($nn);
|
||||||
|
$this->setKlasse($kl);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Öffentliche Zugriffsfunktionen
|
||||||
|
// Setter
|
||||||
|
public function setVorname(string $vn): void {
|
||||||
|
$this->vorname = $vn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setNachname(string $nn): void {
|
||||||
|
$this->nachname = $nn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setKlasse(string $kl): void {
|
||||||
|
$this->klasse = $kl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getter
|
||||||
|
public function getVorname(): string {
|
||||||
|
return $this->vorname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getNachname(): string {
|
||||||
|
return $this->nachname;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getKlasse(): string {
|
||||||
|
return $this->klasse;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sonstige Funktionen
|
||||||
|
public function ausgabe() {
|
||||||
|
echo "<p>";
|
||||||
|
echo "Vorname: $this->vorname<br>";
|
||||||
|
echo "Nachname: $this->nachname<br>";
|
||||||
|
echo "Klasse: $this->klasse";
|
||||||
|
echo "</p>";
|
||||||
|
}
|
||||||
|
|
||||||
|
public function versetzen():bool{
|
||||||
|
if($this->klasse == "2BKI1"){
|
||||||
|
$this->klasse = "2BKI2";
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
Reference in New Issue
Block a user