prog: aufgabe vom 24-11-25, inf: flanken code
PROGT: - wie viel reiskörner auf jedem feld eines schachbrett ist und wie viel kg auf dem schachbrett ist - primzahlrechner INF: code zum mitschrieb von inf
This commit is contained in:
49
INF/flanken-1/flanken-1.ino
Normal file
49
INF/flanken-1/flanken-1.ino
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
#include <Wire.h>
|
||||||
|
#include "SSD1306Wire.h"
|
||||||
|
|
||||||
|
#define SCREEN_WIDTH 128 // OLED Display Breite, in Pixel
|
||||||
|
#define SCREEN_HEIGHT 64 // OLED Display Höhe, in Pixel
|
||||||
|
|
||||||
|
SSD1306Wire display(0x3c, 21, 22); // 21=SDA 22=SCL I2C-Bus Pins
|
||||||
|
|
||||||
|
// ***** globale Variablen *************************************************
|
||||||
|
long showtime;
|
||||||
|
int x, y; // Pixel-Koordinaten für das Display
|
||||||
|
|
||||||
|
// Variablen für die Eingabe
|
||||||
|
char name[100]; // Array für den Namen, maximal 99 Zeichen + null-terminierend
|
||||||
|
int i = 0; // Index für die Zeichen im Array
|
||||||
|
|
||||||
|
// ***** Initialisierung **************************************************
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(9600); // Seriellen Monitor starten
|
||||||
|
display.init(); // Initialisierung des OLED
|
||||||
|
display.flipScreenVertically(); // Ausrichtung passend zur Platine
|
||||||
|
display.setFont(ArialMT_Plain_16); // Schriftgröße einstellen
|
||||||
|
display.drawString(0, 0, "INPUT NAME"); // Text auf OLED anzeigen
|
||||||
|
display.setTextAlignment(TEXT_ALIGN_CENTER); // Text zentrieren
|
||||||
|
display.display(); // Anzeige aktualisieren
|
||||||
|
delay(5000); // 5 Sekunden warten
|
||||||
|
display.setTextAlignment(TEXT_ALIGN_LEFT); // Text linksbündig setzen
|
||||||
|
x = 2; // Startposition setzen
|
||||||
|
y = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ***** Endlosschleife ***************************************************
|
||||||
|
void loop() {
|
||||||
|
if (Serial.available() > 0) {
|
||||||
|
char incomingByte = Serial.read(); // Ein Zeichen von der seriellen Schnittstelle lesen
|
||||||
|
|
||||||
|
if (incomingByte == '\n' || incomingByte == '\r') { // Wenn Enter (newline oder carriage return) gedrückt wurde
|
||||||
|
name[i] = '\0'; // Null-Terminierung für die Zeichenkette
|
||||||
|
Serial.print("Du heißt: ");
|
||||||
|
Serial.println(name); // Den Namen über den seriellen Monitor ausgeben
|
||||||
|
i = 0; // Den Index zurücksetzen, um für den nächsten Namen bereit zu sein
|
||||||
|
} else {
|
||||||
|
if (i < sizeof(name) - 1) { // Sicherstellen, dass die Länge des Namens nicht überschritten wird
|
||||||
|
name[i] = incomingByte; // Das Zeichen in das Array einfügen
|
||||||
|
i++; // Den Index erhöhen
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
47
INF/ultraschallsensor/ultraschallsensor.ino
Normal file
47
INF/ultraschallsensor/ultraschallsensor.ino
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
/* Auswertung eines Ultraschall-Abstandssensors (Testprogramm)
|
||||||
|
* Der HC-SR04 benötigt 5V Versorgungsspannung, der HS-SR04P läuft auch mit 3,3V
|
||||||
|
*
|
||||||
|
* Im Setup ist ein Test für die Umrechnung der gemessenen Zeit (in µs)
|
||||||
|
* Die erste Formel berechnet d = s/2 = (v * t) / 2 mit d in cm, v in cm/s und t in s
|
||||||
|
* Die zweite Formel berechnet den Abstand mit dem ausmultiplizierten Faktor
|
||||||
|
* Die dritte Formel berechnet den Abstand ganzzahlig mit einem gerundeten Faktor
|
||||||
|
*/
|
||||||
|
const int Trigger=14, Echo=27;
|
||||||
|
float fAbstand;
|
||||||
|
unsigned long Messwert, iAbstand, lastMillis;
|
||||||
|
// ***** Setup, Hardware initialisieren ***************************************************************
|
||||||
|
void setup( ) {
|
||||||
|
Serial.begin(115200);
|
||||||
|
pinMode ( Trigger, OUTPUT );
|
||||||
|
pinMode ( Echo, INPUT );
|
||||||
|
// an Stelle von Messwert = pulseIn( Echo, HIGH );
|
||||||
|
Messwert = 10000; // Simulation des Sensors durch bekannte Werte => 10ms = 3,43m Gesamt => 171,5cm Abstand
|
||||||
|
fAbstand = 34300.0 * Messwert / (1E6 * 2); // hier ist die Schallgeschwindigeit 343m/s = 34300cm/s lesbar enthalten
|
||||||
|
Serial.print( " Berechneter Abstand: ");
|
||||||
|
Serial.println( fAbstand );
|
||||||
|
fAbstand = Messwert / 58.3; // hier ist die Schallgeschwindigkeit nicht einfach anpassbar
|
||||||
|
Serial.print( " Berechneter Abstand mit /58.3: ");
|
||||||
|
Serial.println( fAbstand );
|
||||||
|
iAbstand = Messwert / 58; // Gerundeter Faktor, Fehler 0,2%, es kann mit Int gerechnet werden
|
||||||
|
Serial.print( " vereinfacht mit /58: ");
|
||||||
|
Serial.println( iAbstand );
|
||||||
|
|
||||||
|
}
|
||||||
|
// ***** Endlosschleife, Einlesen, Verarbeiten, Ausgeben *********************************************
|
||||||
|
void loop ( ) {
|
||||||
|
// Zeitsteuerung mit millis()
|
||||||
|
unsigned long currentMillis = millis();
|
||||||
|
// Messung 2x pro Sekunde
|
||||||
|
if(currentMillis - lastMillis >= 500) {
|
||||||
|
lastMillis = currentMillis;
|
||||||
|
// Trigger-Impuls mit 10µs Dauer erzeugen
|
||||||
|
digitalWrite(Trigger, HIGH);
|
||||||
|
delayMicroseconds(10);
|
||||||
|
digitalWrite(Trigger, LOW);
|
||||||
|
// Jetzt den High-Impuls am Echo-Eingang ausmessen
|
||||||
|
Messwert = pulseIn( Echo, HIGH );
|
||||||
|
fAbstand = 34300.0 * Messwert / (1E6 * 2); // hier ist die Schallgeschwindigeit 343m/s = 34300cm/s lesbar enthalten
|
||||||
|
Serial.printf( "Berechneter Abstand: %4.1f cm \n", fAbstand);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
16
progp/24-11-21/primzahlrechner.html
Normal file
16
progp/24-11-21/primzahlrechner.html
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<!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>
|
||||||
|
<h1>Primzahlrechner</h1>
|
||||||
|
<form action="primzahlrechner.php">
|
||||||
|
<label for="zahl">Zahl:</label>
|
||||||
|
<input type="number" name="zahl" id="zahl">
|
||||||
|
<input type="submit" value="Testen">
|
||||||
|
</form>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
21
progp/24-11-21/primzahlrechner.php
Normal file
21
progp/24-11-21/primzahlrechner.php
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
$zahl = $_REQUEST["zahl"];
|
||||||
|
|
||||||
|
$isPrime = true;
|
||||||
|
if ($zahl <= 1) {
|
||||||
|
$isPrime = false;
|
||||||
|
} else {
|
||||||
|
for ($i = 2; $i <= sqrt($zahl); $i++) {
|
||||||
|
if ($zahl % $i == 0) {
|
||||||
|
$isPrime = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($isPrime) {
|
||||||
|
echo "Die Zahl $zahl ist eine Primzahl";
|
||||||
|
} else {
|
||||||
|
echo "Die Zahl $zahl ist keine Primzahl";
|
||||||
|
}
|
||||||
|
?>
|
||||||
32
progp/24-11-21/reiskorn.php
Normal file
32
progp/24-11-21/reiskorn.php
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
<style>
|
||||||
|
.ergebnis {
|
||||||
|
background-color: lightblue;
|
||||||
|
border: 2px solid black;
|
||||||
|
margin: 5px;
|
||||||
|
}
|
||||||
|
span {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<h1>Reiskörner auf Schachbrett</h1>
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$felder = 64;
|
||||||
|
$koerner =1;
|
||||||
|
$gewichtProReiskorn= 0.02;
|
||||||
|
|
||||||
|
$gesamtReiskörner = 0;
|
||||||
|
$gesamtGewicht = 0;
|
||||||
|
|
||||||
|
for ($i = 1; $i < $felder; $i++) {
|
||||||
|
$gesamtReiskoerner +=$koerner;
|
||||||
|
|
||||||
|
$gewichtFeld = $koerner * $gewichtProReiskorn;
|
||||||
|
$gesamtGewicht += $gewichtFeld;
|
||||||
|
|
||||||
|
echo "<p class='ergebnis'>Körner auf dem <span>$i.</span> Feld. Körner: <span>$koerner</span>.</p> ";
|
||||||
|
// Körner verdoppeln
|
||||||
|
$koerner = $koerner*2;
|
||||||
|
}
|
||||||
|
echo "Gewicht: <span>".number_format($gesamtGewicht, 3)."</span> g; <span>". number_format($gesamtGewicht/1000)."</span> kg";
|
||||||
|
?>
|
||||||
Reference in New Issue
Block a user