====== www: Makerspaceder SAS - CodeWeek 2024======
===== Teil 1 3D-Druck =====
* Konstruktion mit BlocksCAD
* Namensschild
* Ampel
* [[https://www.blockscad3d.com/editor/?lang=de|BlocksCAD]]
* [[https://www.youtube.com/watch?v=wVX0cMV4s74|Einführung]]
====== INFO: BlocksCAD - Ampel ======
{{:www-fuer-alle:blockscad-ampel.png?400|}}
- Erstelle einen Quader
- schneide drei verschobene Zylinder heraus
- schneide zwei Quader heraus, so dass ein Ampelmast entsteht
- füge einen verschobenen Quader als Ampelfuß hinzu
===== Teil 2 ARDUINO - Lärmampel =====
===== Arduino lernen =====
==== 3.1 Grundstruktur für einen Sketch ====
int LED = 9;
int helligkeit = 0;
int x = 5;
void setup() {
// put your setup code here, to run once:
pinMode(LED, OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
analogWrite(LED, helligkeit);
helligkeit = helligkeit + x;
delay(25);
if (helligkeit == 0 || helligkeit ==255)
{
x = -x;
}
}
==== Workshop ====
=== 1. Verbindungstest ===
- der Rechner ist gestartet und Du bist angemeldet
- starte die ARDUINO IDE 2
- lade: Datei - Beispile - 01.Basics - Blink
- {{:www-fuer-alle:ide-nano-blink.png?400|}}
- Stelle das richtige Board und den richtigen USB-Port ein: NANO
- {{:www-fuer-alle:ide-nano-usb.png?400|}}
- Nun muss die richtige Variante des NANO eingestellt werden
- Bootloader: 328 oder 328 old oder 168
- {{:www-fuer-alle:ide-nano-bootloader.png?400|}} {{:www-fuer-alle:ide-nano-bootloader-auswahl.png?400|}}
- Prüfe und lade den Code hoch
- {{:www-fuer-alle:ide-nano-pruefen-hochladen.png?400|}}
=== 2. Schaltungsaufbau ===
Baue die Musterschaltung nach
{{:info:laermampe-2024-10-12l.png?400|}}
=== 3. die blinkende Ampel ===
ACHTUNG: Es gibt verschiedene ARDUINO-NANO-Varianten - Bootloader einstellen - siehe oben!
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
pinMode(7, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(2, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(2, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
* Ersetze die 2 durch 4 und beobachte
* Ersetze die 4 durch 7 und beobachte
=== 4. gesteuerte Lichtzeichenanlage ===
- live...
=== 5.Eine komplexe Variante zum Mitnehmen ===
const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz)
int const AMP_PIN = A0; // Preamp output pin connected to A0
unsigned int sample;
unsigned long startMillis = 0;
unsigned int peakToPeak = 0; // peak-to-peak level
unsigned int signalMax = 0;
unsigned int signalMin = 1024;
float mittelwert; // Erstellen einer Variable für den Mittelwert aus den Messungen
const int led_rot = 2; // PINs an Digital-Ausgängen für die LEDs definieren
const int led_gelb = 4;
const int led_gruen = 7;
const float grenze_rot = 300.0; // Grenzen für Pegelanzeigen mit LEDs festlegen - je kleiner die Abstände, desto sensibler die Anzeige
const float grenze_gelb = 80.1;
int w; // Erstellen von Variablen für die "zu-Fuß-Berechnung" des Mittelwertes
void setup()
{
Serial.begin(9600);
ausgaenge_definieren(); // Funktion zur Definition der PINs der LEDs als Ausgänge aufrufen
ampelstufen_anzeigen(); // Status der Grenzen der LEDs auf seriellem Monitor anzeigen
}
void loop(){
startMillis = millis(); // Start of sample window
peakToPeak = 0; // peak-to-peak level
signalMax = 0;
signalMin = 1024;
Messung();
w = peakToPeak;
mittelwert = (w+2*mittelwert)/3;
Serial.print(" Mittelwert: ");
Serial.print(mittelwert);
ampelstufen_anzeigen();
Serial.println();
if (mittelwert > grenze_rot) {alarmrot();}
else { if (mittelwert > grenze_gelb) {alarmgelb();}
else {alarmgruen();}
}
}
void Messung() { // Messung der maximalen Amblitude
while (millis() - startMillis < sampleWindow) {
sample = analogRead(AMP_PIN);
if (sample < 1024) { // toss out spurious readings
if (sample > signalMax) {
signalMax = sample; // save just the max levels
}
else if (sample < signalMin) {
signalMin = sample; // save just the min levels
}
}
}
peakToPeak = signalMax - signalMin; // max - min = peak-peak amplitude
}
void ausgaenge_definieren(){ // Hier werden die PINs als Ausgang definiert
pinMode(led_rot, OUTPUT);
pinMode(led_gelb, OUTPUT);
pinMode(led_gruen, OUTPUT);
}
void ampelstufen_anzeigen(){ // Mit dieser Funktion können Grenzwerte der Ampelstufen angezeigt werden
Serial.print(" ");
Serial.print("grenze_rot: ");
Serial.print(grenze_rot);
Serial.print(" grenze_gelb: ");
Serial.print(grenze_gelb);
delay (150);
}
void alarmrot() {
digitalWrite(led_gruen, LOW);
digitalWrite(led_gelb, LOW);
digitalWrite(led_rot, HIGH);
}
void alarmgelb() {
digitalWrite(led_gruen, LOW);
digitalWrite(led_gelb, HIGH);
digitalWrite(led_rot, LOW);
}
void alarmgruen() {
digitalWrite(led_gruen, HIGH);
digitalWrite(led_gelb, LOW);
digitalWrite(led_rot, LOW);
}
==== eigene Varianten ====
* Füge weiter Zwischenstufen ein:
* statt GRÜN - GELB - ROT
* GRÜN - **GRÜN und GELB** - GELB - **GELB und ROT** - ROT