Tinkercad Schaltkreise

Tinkercad Schaltkreise Tutorial



Einleitung
Tinkercad ist eine kostenlose Web-App für 3D-Entwürfe, Elektronik und Programmierung. In diesen Turorial werden wir mit dem Simulationsprogramm Tinkercad verschiedenene Aufgaben lösen. Zunächst sehen wir uns die "Block-Sprache" an, anschließend lösen wir Ausgaben in C++.






Tinkercad Anmeldung: https://www.tinkercad.com/login






Mein erstes Programm



Programm in Block-Sprache und C++



Mit dem Betätigen des Tasters leuchtet die LED.



Die LED soll mit dem Taster ein- und ausschaltbar sein.
Erstelle das Programm in Blöcke.













Servo-Motor mit Poti und Display
Der Servo-Motor wird mit dem Poti im Bereich zwischen 0° und 180° angesteuert. Das LCD-Display zeigt den Winkel in Grad an. Auf den Seriellen Monitor wird der Potiwert und der Winkel angezeigt.

















Servo-Motor mit Poti und Siebensegment-Anzeige
Der Servo-Motor wird mit dem Poti im Bereich zwischen 0° und 180° angesteuert. Das Sieben-Segment-Display zeigt den Winkel in Grad an. Auf den Seriellen Monitor wird der Winkel angezeigt.














Greifarm-Steuerung mit 5 Servo-Motore
Fünf Servo-Motore werden für einen Greifarm mit fünf Potis gesteuert. Schreibe das Programm in Blöcke.














Alarmanlage
Erkennt der PIR-BWM eine Bewegung, wird die LED und der Buzzer aktiviert. Schreibe das Programm in Blöcke.














Einparkhilfe
Bewegt sich ein Objekt auf den Entfernungsmesser zu, soll je nach dem noch ver­füg­ba­ren Abstand zum Entfernungsmesser ein optisches Signal (<70cm) oder ein optisches Signal und ein akustisches Signal (<50cm) gegeben werden. Schreibe das Programm in Blöcke.














Ultraschallsensor aktiviert eine Ampelschaltung
Ampel mit Ultraschallsensor. Die Ampel zeigt zunächst rot. Wenn die Entfernung kleiner als 100 cm ist, soll sie nach 1 Sekunde Wartezeit erst auf rot/gelb für eine Sekun­de, dann auf grün für drei Sekunden springen. Anschlie­ßend folgt wie­der eine Sekun­de gelb und dann wieder rot. Schreibe das Programm in Text.














Temperatur-Anzeige
Die Temperatur soll auf einem LCD-Display ange- zeigt werden. Die LEDs leuchten bei
grün <20°
gelb <60° und >40°
rot >60°
Schreibe das Programm in Blöcke.














Feuchte-Anzeige
Der Feuchtesensor zeigt die Bodenfeuchte mit Hilfe der LEDs an.
rot <200
orange <400
gelb <600
grün <800
blau >800
Schreibe das Programm in Blöcke.














Gas-Ampel
Die Gas-Ampel zeigt Gas mit Hilfe der drei LEDs an. Das Gas liegt am A1 in einem Bereich von 0-1000ppm.
Die LEDs:
rot >500ppm
gelb >350ppm
grün <350ppm
blau betriebsbreit
Schreibe das Programm in Blöcke.














Zähler
Programmiere einen Zähler der von 1-12 zählt und dann wieder bei 1 beginnt. Erstelle das Programm in Block














Personenzähler
Mit der Taste 1 wird der Personenzähler um 1 erhöht, mit der Taste 2 um 1 verringert. Ist der Zählerstand 5 oder > 5, leuchtet die Rote LED, bei einem Zählerstand <5 leuchtet die grüne LED. Erstelle das Programm in Block.














Mit einem Vor-Rückwärtszähler eine LED dimmen


















delay() und millis()
Der Befehl delay() ist in C++ Programmen nicht immer hilfreich. Er blockiert den Programmablauf und so können in der Delay-Phase z. B. keine Eingänge abgefragt werden.
Abhilfe bietet der millis() Befehl. Am besten erkennt man den Unterschied, wenn die nachfolgenden Programme mit delay() und millis() verglichen werden.
Drei LEDs, die mit unterschiedlichen Frequenzen blinken sollen, sind mit dem delay() Befehlt nicht realisierbar. Auch der Taster, der eine LED einschalten soll, wird in der Delay-Phase nicht erkannt.





C++ Testprogramm delay()







Teste das Programm mit millis()







Ausgänge schalten mit Arrays
Ein Array ist eine Liste von Variablen, die den gleichen Datentyp haben. Mit einem Array lässt sich sehr einfach ein Lauflicht darstellen.
Das Lauflicht soll die LEDs von links nach rechts und zurück ein/ausschalten.

Array-Befehl:
int LEDs[] = {7, 6, 5, 4, 3, 2, 1, 0};





C++ Programm







Ausgänge schalten mit PORT
Funktionen wie digitalWrite() und digitalRead() sind relativ langsam in der Ausführung und manchmal werden Programme mit vielen Ein- oder Ausgängen komplex und schwer überschaubar. Deshalb ist es oft übersichtlicher die Pins mithilfe der Ports zu definieren und zu schalten.
Es existieren drei sogenannte Register:
DDR - Data Direction Register - read/write
PORT - &xnbsp;Port Register - read/write
PIN - Port Input Register - read only
Pins als INPUT = 0 oder als OUTPUT = 1 definieren
Pins als HIGH = 1 oder als LOW = 0 festlegen
gibt den Zustand der Pins an, die im DDR-Register auf Input gesetzt wurden

Das Register wird jeweils mit dem Namen des Ports (D, B oder C) ergänzt.
Beim Zugriff auf die Ports wird jeweils ein Bit gesetzt. Sein Wert ist entweder 1 = an, oder 0 = aus.


Die Funktionen soll das Programm erfüllem:
Lauflicht hin und zurück
alle LEDs ein
alle LEDs aus
die LEDs 7 5 3 1 ein
die LEDs 6 4 2 0 ein
die beiden äußeren LEDs ein
die beiden inneren LEDs ein
alle LEDs aus





Die digitalen und die analogen Pins des Arduinos sind in drei Gruppen aufgeteilt:






Beispiele:
Digitale Pins 7, 6, 5, 4 und 3 als OUTPUT setzen
DDRD = B11111000;


Digitale Pins 7, 6, 5, 4 und 3 auf HIGH setzen:
PORTD = B11111000;

Taster an Pin 13 als INPUT setzen
DDRB = B00100000;

PULL_UP-Widerstand an Pin 13 einschalten
PORTB = B00100000;

Bits nach rechts schieben:
PORTD = PORTD >> 1;





PORTD ordnet den digitalen Arduino-Pins 0 bis 7 zu
DDRD - Port D Data Direction Register - read/write
PORTD - Port D Data Register - read/write
PIND - Port D Input Pins Register - read only
PORTB&xnbsp;ordnet den digitalen Arduino-Pins 8 bis 13 zu
Die beiden hohen Bits (6 &; 7) werden nicht
zugeordnet und sind auch nicht verwendbar
DDRB - Port B Data Direction Register - read/write
PORTB - Port B Data Register - read/write
PINB - Port B Input Pins Register - read only
PORTC&xnbsp;wird den analogen Arduino-Pins 0 bis 5
zugeordnet. Die Pins 6 &; 7 sind auf dem
Arduino UNO nicht vorhanden
DDRC - Port C Data Direction Register - read/write
PORTC - Port C Data Register - read/write
PINC - Port C Input Pins Register - read only










Der Parameter ~ kehrt den Wert eines Bits um:
// LEDs an den Pins 7 5 3 1 leuchten
PORTD = B10101010;

// Werte umkehren, aus 0 wird 1 und aus 1 wird 0
PORTD = ~PORTD;

// PORTD hat jetzt den Wert B01010101
// -> Die LEDs an den Pins 6 4 2 0 leuchten



C++ Programm







Übung

KITT Lauflicht mit PORT-Register
Jeweils drei LEDs sollen von links nach rechts und zurück laufen. Die Geschwindigkeit ist mit dem Poti von 150-400ms einstellbar. Schreibe das Programm in Text.












Übung

Würfel mit PORT-Register
Jeweils drei LEDs sollen von links nach rechts und zurück laufen. Die Geschwindigkeit ist mit dem Poti von 150-400ms einstellbar. Schreibe das Programm in Text.