Freitag, 22. November 2013
Kurs Sensorik und Aktorik Motor antreiben mit Akku Problem: Akku muss genug Strom liefern Drahtwiderstand (Länge und Dicke) hintere LEDs leuchten bei großen Installationen schwächer (bei Parallelschaltung) R ~ L / d² (Widerstand proportional Länge Draht durch Durchmesser Draht) Wohnungsbrände: großer Widerstand bei Drähten (bei Bruchstellen Hitze -> Brand) Aufgabe: Innenwiderstand von Akku bestimmen mit Schutzwiderstand, damit Messgerät nicht kaputt geht R(i) (Widerstand Stromquelle), R(s) (Widerstand Messgerät) R(ges) = U / I R(i)=U – U(s) / J ohne Widerstand 9 V, mit Widerstand 8,74 V 0,26 V / 0, 027 A ≈ 10 W Milliamperestunden (mAh) W = P * t (Arbeit ist Leistung mal Zeit) in Ws (Watt * Sekunden) Ladung Q Q = J * t (in Amperesekunden) t(E): Entladezeit t(E) = Q / J ATmega328
Mikrocontroller "Crowduino" (10 – 20 EUR) Hauptchip über USB-Ladekabel, Netzteil (7 – 12 V), Batterie (aber stabil) Reset-Knopf Programm Arduino
Installation von Programm Arduino Aufbau ähnlich Processing (auch mit Hilfe > Referenz) Basis von Arduino nicht Java, sondern C C++ mehr Klassen als C Klasse bündelt Daten und Funktionen Editor-Fenster void setup() void loop() statt in Processing draw() Zugriff auf einzelne Pins Aufgabe: LED anschalten und blinken lassen große Ports (mit durchnummerierten Pins) analog (0 – 5) auch als digitale Pins nutzbar digital (0 – 7) mit Werten 0 und 1 andere Teile über digitalen Port verbunden (wie LED-Laufschrift-Gerät), als serielle Schnittstelle nutzbar setup: festlegen, welche Pins als Ausgang/Eingang genutzt werden sollen pinMode(LED,OUTPUT); (Beispiel LED = 12 als Ausgang benutzen) Pins: 14 mA, darüber Belastung zu hoch 200 mA belastbar insgesamt (maximal zehn LEDs) LED=Variable, die am Anfang mit int LED = 12 eingeführt wird const int LED = 12; const: nicht mehr änderbar #define LED12 (Variante für C) LED wird über Arduino angesprochen, © Robert Carlsen
LED ansteuern: digitalWrite(LED,HIGH); oder digitalWrite(LED,LOW); delay(1000): weiteres Ausführen für eine Sekunde verzögern HIGH = 5 V (eigentlich etwas dadrunter) und LOW = 0 V langsam einblenden: Trick mit schnellem hin und herschalten, ansonsten analogen Port verwenden Tools > Board > [Board auswählen] eine Pin als Ground im setup() definieren: pinMode(GND1,OUTPUT); digitalWrite(GND1,LOW); A0 – A5: analoge Pins digital ansprechen analogen Pin auslesen: analogRead(); Aufgabe: lichtempfindlichen Widerstand einfügen, damit LEDs schneller blinken, wenn es dunkel wird mit Poti kann Wert gesteigert werden (potenzieren) lichtempfindlicher Widerstand zwischen 5-V-Pin und Poti legen (Voltzahl wird dadurch verändert) pinMode(POTI,INPUT); 0 ~ 0 V und 1023 ~ 5 V