Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Ausgabe von analogen Werten int ledPin = 9; pinMode(ledPin, OUTPUT); Output von 0 - 255 PWM-Ausgänge: 3, 5, 6, 9, 10, and 11.. int brightness = 0; int.

Ähnliche Präsentationen


Präsentation zum Thema: "Ausgabe von analogen Werten int ledPin = 9; pinMode(ledPin, OUTPUT); Output von 0 - 255 PWM-Ausgänge: 3, 5, 6, 9, 10, and 11.. int brightness = 0; int."—  Präsentation transkript:

1 Ausgabe von analogen Werten int ledPin = 9; pinMode(ledPin, OUTPUT); Output von PWM-Ausgänge: 3, 5, 6, 9, 10, and 11.. int brightness = 0; int fadeAmount = 5; void setup() { pinMode(9, OUTPUT); } void loop() { analogWrite(9, brightness); brightness = brightness + fadeAmount; if (brightness == 0 || brightness == 255) { fadeAmount = -fadeAmount ; } delay(30); } PWM

2 value = EEPROM.read(address); //lesen #include EEPROM.write(addr, 0); //löschen EEPROM.write(addr, val); //schreiben EEPROM Das EEPROM des Arduino ist ein 512 Byte großer Speicher, den man beschreiben und auslesen kann. Der Speicherinhalt bleibt beim ausschalten erhalten. Das EEPROM kann ca mal beschrieben werden!

3 Einfacher Timer Installiert einen einfachen Timer, der alle 7 Sekunden eine Nachricht erzeugt unsigned long previousTime = 0; void setup() { Serial.begin(9600); previousTime = millis(); // millis gibt den Wert seit Einschalten des Arduino an } void loop() { if ((millis() - previousTime) >= 7000 ) { Serial.println(„7 Sekunden sin vorbei"); previousTime = millis(); }

4 #include "TimerOne.h" void setup() { pinMode(10, OUTPUT); Timer1.initialize(500000); // Timer 1 initialisieren und auf 0,5 sek setzen Timer1.attachInterrupt(LED); // ruft „LED“ auf, wenn Zeit abgelaufen ist } void LED() { digitalWrite(10, digitalRead(10) ^ 1); //Toggle LED } void loop() { // irgendein Programm } Timer 1 Der Arduino hat 3 Timer. Jeder Timer hat verschiedene Funktionen So kann periodisch ein Programm aufgerufen werden. Z.B. kann man so eine LED blinken lassen, ohne dass das eigentliche Programm beeinflußt wird. Am besten lädt man sich eine Library, wo die wichtigsten Teile schon definiert sind. Der Initialisierungswert ist in Mikrosekunden Funktioniert nur mit Pin 9 oder 10 Timer1

5 #include int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); // Receive the next value } Infrarot-Dekoder (RC5-Code) Wir benötigen eine zusätzliche Library: Library: Die Library muss in den Ordner „Arduino/Library“ kopiert werden. Ausgeben des Codes auf dem Monitor out Minus Plus IR1

6 Infrarot-Dekoder (RC5-Code) #include int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Start the receiver } void loop() { if (irrecv.decode(&results)) { int i = (results.value); switch (i) { case 1: Serial.println ("Eins"); break; case 2: Serial.println ("Zwei"); break; case 3: Serial.println ("Drei"); break; } irrecv.resume(); // Receive the next value } Bei Betätigen der Ziffern 1,2,3- … werden auf dem Monitor die Schriftfolgen „Eins, Zwei, Drei…“ ausgegeben TSOP Wichtige Daten der IR-Empfänger-Module: 36 KHz 950nm Hier wie Anschlüsse der 2 bekanntesten Typen: IR2

7 Infrarot-Sender LD274 SFH415 #include IRsend irsend; void setup() { Serial.begin(9600); } void loop() { irsend.sendSony(01, 12); delay(100); } Infrarot senden Library findet sich unter: IR3

8 Infrarot-Datenübertragung #include IRsend irsend; void setup() { Serial.begin(9600); } void loop() { if (Serial.available() > 0) { char zeichen = Serial.read(); irsend.sendRC5(zeichen, 12); delay(4); } #include int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; LiquidCrystal lcd(7,6,2,3,4,5); void setup() { irrecv.enableIRIn(); lcd.begin(16, 2); } void loop() { if (irrecv.decode(&results)) { char zeichen = results.value; if (zeichen == 35) //wenn # dann löschen { lcd.clear();} else { lcd.print(zeichen); } irrecv.resume(); // Receive the next value } ir_rcv.ino ir_send_ser.ino Im Monitor eingegeben Zeichen werden zum Empfänger übertragen und auf dem LCD dargestellt. Das Löschen des LCD geschieht mit dem #. Empfamgsprogramm Sendeprogramm

9 Reflektor-Koppler A0

10 int sensorValue; void setup() { Serial.begin(9600); } void loop() { sensorValue = analogRead(0); Serial.println(sensorValue, DEC); delay(100); } Reflektor-Koppler Gelesene digitale Werte ausgeben. Einfacher Test des Reflekor-Kopplers CNY1 #include SoftwareServo myservo; int cny = 0; int val; int cny = 0; void setup() { myservo.attach(2); } void loop() { val = analogRead(cny); if (val < 400) {myservo.write(0); } else {myservo.write(180); } delay(15); SoftwareServo::refresh(); } Hell, dann drehe nach links, sonst drehe nach rechts CNY2 (mit Servo)

11 Infrarot „TV-Go“ Sketch:

12 Gleichstrommotor //0 = aus, 1-5 = Geschwindigkeit void setup() { pinMode(9, OUTPUT); Serial.begin(9600); } void loop() { if (Serial.available() > 0) { int a = Serial.read(); Serial.print (a); switch (a) { case 48: analogWrite (9,0); //48 = Ascii für 0 break; case 49: analogWrite (9,50); // sehr langsam break; case 50: analogWrite (9,100); break; case 51: analogWrite (9,150); break; case 52: analogWrite (9,200); break; case 53: analogWrite (9,255); //volle Geschwindigkeit break; } Regelung eines Gleichstrommotors durch PWM weite Motor2 Funktion des Programms: Eingabe von 0-5 im Monitor Damit wird die Geschwindigkeit in 5 Stufen eingestellt. Spannung je nach Motor!!! Bei den kleinen Solarmotoren mit +5V vom Arduino verbinden. Motor2

13 Gleichstrommotor Drehrichtungsumkehr mit H-Brücke

14 Gleichstrommotor

15 int EN1 = 8; //enable int IN1 = 9; //1A int IN2 = 10; //2A void setup() { pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); Serial.begin(9600); } void loop() { char val; while(1) { val = Serial.read(); if(val!=-1) { switch(val) { case 'r': Serial.println("rechts"); digitalWrite (EN1,true); digitalWrite (IN1,false); digitalWrite (IN2,true); break; case 'l': Serial.println("links"); digitalWrite (EN1,true); digitalWrite (IN1,true); digitalWrite (IN2,false); break; case 's': Serial.println("stop"); digitalWrite (EN1,true); digitalWrite (IN1,false); digitalWrite (IN2,false); break; } } } Gleichstrommotor regeln H293_1

16 #include int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; int EN1 = 8; //enable int IN1 = 9; //1A int IN2 = 10; //2A void setup() { pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT); Serial.begin(9600); irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { int val = (results.value); switch(val) { case '1': Serial.println("rechts"); digitalWrite (EN1,true); digitalWrite (IN1,false); digitalWrite (IN2,true); break; case '2': Serial.println("links"); digitalWrite (EN1,true); digitalWrite (IN1,true); digitalWrite (IN2,false); break; case '3': Serial.println("stop"); digitalWrite (EN1,true); digitalWrite (IN1,false); digitalWrite (IN2,false); break; } } Gleichstrommotor über Infrarot steuern 1 = rechtsrun 2 = linksrum 3 = stop H293_2

17 Servo ansteuern #include Servo myservo; // Objekt erzeugen int potipin = 0; // Poti an A0 int val; void setup() { myservo.attach(2); // Zugriff zum Servo an Pin 2 } void loop() { val = analogRead(potipin); // liest Potentiometer (Werte zwischen 0 and 1023) val = map(val, 0, 1023, 0, 179); // Skalieren myservo.write(val); // Servo stellen delay(15); } Mit einem Potentiometer die Position des Servos steuern Anschlüsse: schwarz: GND (Minus) Rot: + 5V Gelb: Signal (Pin 2) Servo1

18 Servo ansteuern Mit der IR-Fernsteuerung den Servo steuern #include int RECV_PIN = 11; IRrecv irrecv(RECV_PIN); decode_results results; Servo myservo; // Objekt erzeugen int potipin = 0; // Poti an A0 int val = 90; //Mittelstellung anfahren void setup() { myservo.attach(2); // Zugriff zum Servo an Pin 2 irrecv.enableIRIn(); } void loop() { if (irrecv.decode(&results)) { int val = (results.value); switch (val) { case '1': myservo.write(val += 10); break; case ‚2': myservo.write(val -= 10); break; } Servo2

19 #include Servo myservo; void setup() { myservo.attach(2); } void loop() { int randNumber = random(180); myservo.write(randNumber); delay (300); } Fährt zufällige Positionen an #include Servo myservo; int pos = 0; void setup() { myservo.attach(2); } void loop() { for(pos = 0; pos < 180; pos += 1) { myservo.write(pos); delay(15); } for(pos = 179; pos>=0; pos-=1) { myservo.write(pos); delay(15);} } Fährt immer hin und her servo.attach(pin, min, max) servo.write(angle); servo.read() servo.attached() servo.detach() #include Servo Theodor; int wert; int wertneu; void setup() { Theodor.attach(2); Serial.begin(9600); } void loop() { if (Serial.available() > 0) { wert = Serial.read(); if (wert==49) // 49 = ASCII „1““ { position = position + 1; Theodor.write(position); } Eingabe von „1“ dreht den Servo weiter

20 Schrittmotor

21 #include const int stepsPerRevolution = 200 Stepper myStepper(stepsPerRevolution, 2,3,4,5); int stepCount = 0; void setup() { Serial.begin(9600); } void loop() { int sensorReading = analogRead(A0); int motorSpeed = map(sensorReading, 0, 1023, 0, 100); if (motorSpeed > 0) { myStepper.setSpeed(motorSpeed); myStepper.step(stepsPerRevolution/100); } Stepper1

22 Porterweiterung mit Shift-Register HC595 int taktPin = 8; int speicherPin = 9; int datenPin = 10; byte wert = B ; //zu übertragender Wert Binär void setup(){ pinMode(taktPin, OUTPUT); pinMode(speicherPin, OUTPUT); pinMode(datenPin, OUTPUT); } void loop(){ digitalWrite(speicherPin, LOW); shiftOut(datenPin, taktPin, MSBFIRST, wert); digitalWrite(speicherPin, HIGH); delay(20); } 595-Port

23 Porterweiterung mit Shift-Register HC595 Taktung

24 Library hierzu: Shift-Register Mit nur 3 Verbindungen das LCD bedienen Benötigt wird eine spezielle Library #include ShiftLCD lcd(2, 4, 3); void setup() { lcd.begin(16, 2); lcd.print("Hello, World!"); } void loop() { lcd.setCursor(0, 1); lcd.print(millis()/1000); } 595-LCD

25 Library holen von der Seite: unter PCF8574-HD44780 LCD über I2C-Bus anschließen #include LiquidCrystal_I2C lcd(0x38,16,2); //Adresse 0x38 für I2C void setup() { lcd.init(); lcd.print(„Halloele!“) } void loop() { } I2C-LCD

26 Uhr mit PCF8583 an I2C-Bus Library: https://github.com/edebill/PCF8583 Den Widerstand an Pin 7 (int) nicht vergessen!

27 #include // necessary, or the application won't build properly #include /***************************************************************************** * read/write serial interface to PCF8583 RTC via I2C interface * Arduino analog input 5 - I2C SCL (PCF8583 pin 6) * Arduino analog input 4 - I2C SDA (PCF8583 pin 5) * You can set the type by sending it YYMMddhhmmss; * the semicolon on the end tells it you're done... ******************************************************************************/ int correct_address = 0; PCF8583 p (0xA0); void setup(void){ Serial.begin(9600); Serial.print("booting..."); Serial.println(" done"); } void loop(void){ if(Serial.available() > 0){ p.year= (byte) ((Serial.read() - 48) *10 + (Serial.read() - 48)) ; p.month = (byte) ((Serial.read() - 48) *10 + (Serial.read() - 48)); p.day = (byte) ((Serial.read() - 48) *10 + (Serial.read() - 48)); p.hour = (byte) ((Serial.read() - 48) *10 + (Serial.read() - 48)); p.minute = (byte) ((Serial.read() - 48) *10 + (Serial.read() - 48)); p.second = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48)); // Use of (byte) type casting and ascii math to achieve result. if(Serial.read() == ';'){ Serial.println("setting date"); p.set_time(); } p.get_time(); char time[50]; sprintf(time, "%02d/%02d/%02d %02d:%02d:%02d", p.year, p.month, p.day, p.hour, p.minute, p.second); Serial.println(time); delay(3000); } Uhr mit PCF8583 I2C Beispiel I2C-Uhr

28 Uhr mit PCF8583 mit Batterie I2C Schaltung für die Uhr mit Gangreserve

29 Eeprom an I2C-Bus anschließen #include //I2C library

30 Arduino-Teil – erzeugen von analogen Messwerten mittels Poti int Messwert; int Spannung; void setup() { Serial.begin(9600); } void loop() { Messwert=analogRead(5); Serial.println(Messwert); delay(10); } Visualisierung mit Procesing Processing-Teil: Werte als veränderlicher Kreis darstellen import processing.serial.*; int valPoti; float valFloat; int linefeed = 10; Serial serport; void setup () { size(600, 600); serport = new Serial(this, Serial.list()[Serial.list().length-1], 9600); } void draw() { while (serport.available() > 0) { String valString = serport.readStringUntil(linefeed); if (valString != null) { print(valString); valFloat=float(valString); valPoti=int(valFloat); } background(153); fill(255,200,0); ellipse(200,200,valPoti,valPoti); serport.clear(); }


Herunterladen ppt "Ausgabe von analogen Werten int ledPin = 9; pinMode(ledPin, OUTPUT); Output von 0 - 255 PWM-Ausgänge: 3, 5, 6, 9, 10, and 11.. int brightness = 0; int."

Ähnliche Präsentationen


Google-Anzeigen