Upload
dinhxuyen
View
226
Download
0
Embed Size (px)
Citation preview
1. Was ist Arduino- Definition einer Hardware- und Software Plattform- Open Source- Hardware:
- Mikrocontroller ( zB Atmel AVR aus mega Serie)- analoge- und digitale Ein- und Ausgänge- serielle Schnittstelle zum Programmieren- Spannungsquelle USB (5V) oder extern 7-12V- Bootloader vorhanden- Programmierung direkt ohne externen Programmierer (USB)- Beispielboards: UNO, DUE, Leonardo, Nano, Mega 2560 R3
- Software- eigene integrierte IDE in Java- Code Editor- gcc Compiler - C / C++
- https://de.wikipedia.org/wiki/Arduino_(Plattform)
2. Arduino UNO R3- CPU: Atmega328P- 5V- 8bit- 16MHz- USB- 14 Digital I/O ( 6 PWM)- 6 Analoge Input Pins- 20mA DC I/O- 50mA DC für 3.3V Pin- 32KB Flash (0,5 Bootloader)- 2KB SRAM- 1KB EEPROM- 68.8mm x 53.4mm L/B
https://www.arduino.cc/en/Main/arduinoBoardUnoATmega328P
14x Digital I/O (6x PWM)
6x analoge Input / digital I/O
USB to Serial Converter
3. IDE- www.arduino.cc/en/Main/Software- Download Packet für Linux, MAC
Windows- IDE entpacken- starten- Arduino über USB anschliessen- Unter Tools->Board Arduino UNO
auswählen- Unter Tools->Port Anschluß auswählen- Unter Sketch->Include Library können
Bibliotheken hinzugefügt / nachinstalliert werden
Compilieren hochladen öffnen speichern
4. Programmstruktur
void setup(){// einmalig beim Start ausgeführter Code
} void loop(){
// ständig ausgeführter Code nach Setup()}
// Code nur zur Veranschaulichung// void main() {// setup();// while (1) loop();//}
void setup() { // initialize digital pin 13 as // an output. pinMode(13, OUTPUT);}
// the loop function runs over and over again forevervoid loop() { digitalWrite(13, HIGH); // turn the LED on (HIGH is the // voltage level) delay(1000); // wait for a second digitalWrite(13, LOW); // turn the LED off by making // the voltage LOW delay(1000); // wait for a second}
- File->Examples->Basic->Blink
- lässt LED auf Arduino UNO R3 Board blinken
5. Beispielprogramm
6. Debuggen- IDE: Tools-Serial Monitor- Ausgabe mit Serial.print(...)
Int counter = 0;
void setup() { // initialize serial communication at 9600 bits per second: Serial.begin(9600);}
void loop() { // print out to serial monitor Serial.print(“Counter: “); Serial.println(counter); counter++; delay(1000); }
7.1 Motorshield - Hardware
- Ansteuerung von Motoren mit H-Brücke wegen Strombedarf- Adafruit Motorshield L293D: https://learn.adafruit.com/adafruit-motor-shield/library-install
- 4 H-Brücken mit je 0,6A (Spitze 1,2A)- 4 bidirktionale DC Motoren- 2 Schrittmotoren- 2 Servos
- Bibliothek AFMotor https://github.com/adafruit/Adafruit-Motor-Shield-library/zipball/master- 2x Getriebemotoren mit passendem 67mm Rad zB GM9 (Watterott.com)
7.2 Motorshield - Software#include <AFMotor.h>
class MyMotor {public: MyMotor(int number) : motor(number), currentSpeed(0) { } void setSpeed(int speed) { currentSpeed = speed; if (speed >= 0){ motor.setSpeed(speed); motor.run(FORWARD); } else { motor.setSpeed(-speed); motor.run(BACKWARD); } } void stop() { setSpeed(0); } void forward() { setSpeed(255); } void backward(){ setSpeed(-255);}private: AF_DCMotor motor; int currentSpeed;};MyMotor leftMotor(1), rightMotor(3);
8.1 Ultraschallsensor - Hardware
GNDEchoTrigVCC
- Aukru 4-Pin HC-SR04 Ultraschallsensor
- A0 : trig- A1: Echo- VCC: +5V
- Bibliothek: https://code.google.com/p/arduino-new-ping/downloads/detail?name=NewPing_v1.5.zip&can=2&q
8.2 Ultraschallsensor - Software#include <NewPing.h>class DistanceSensor{public: DistanceSensor(int triggerPin,int echoPin,int maxDistance) : maxDistance(maxDistance),sensor(triggerPin,echoPin,maxDistance) { } unsigned int getDistance() { int distance = sensor.ping_cm(); if ( distance <= 0 ) return maxDistance; return distance; }private: unsigned int maxDistance; NewPing sensor;};
// analoge Pins A0-A5 können auch digital verwendet werden// heissen dann 14-19DistanceSensor distanceSensor(14,15,200);
9.1 Servomotor - Hardware
- Servomotor SG90 Tower Pro - Anschluss direkt an Motor Shield Servo 1
- gelb → minus- rot → Plus- braun → Signal
- Bibliothek Servo.h in Arduino IDE enthalten
9.2 Servomotor - Software#include <Servo.h>class MyServo{public: MyServo() {} void init(){
// Pin 9 ist Servo 1 auf dem Shield servoMotor.attach(9); } void lookForward() { servoMotor.write(90); } void lookLeft() { servoMotor.write(60); } void lookRight() { servoMotor.write(120); }private: Servo servoMotor;};MyServo servoMotor;
10.1 Zusammenbau - Sensor
1. Servomotorhalterung mit doppelseitigem Klebeband befestigt
2. Sensor auf Servo befestigen
3. Servo mit doppelseitigem Klebeband an 4xAA batteriehalterung befestigen
10.2 Zusammenbau - Motoren
1. doppelseitiges Klebeband an die Motoren
2. Motoren auf die 4xAA Batteriehalterung kleben. Motoren sollten parallel sein und eine durchgehend gerade Achse haben
3. Arduino mit Motorshield auf die Motoren mit doppelseitigem Klebeband befestigen
11.2 Robotersteuerung - SW void loop() { if ( stopped() )
return; unsigned long currentTime = millis(); int distance = distanceSensor.getDistance() ; if ( doneRunning( currentTime ) )
stop(); else if ( moving() ) { if ( obstacleAhead( distance ) ) turn( currentTime ); } else if ( turning() ) { if ( doneTurning( currentTime, distance ) ) move(); } }
12. Links
- www.arduino.cc
- www.arduino.cc/en/Main/arduinoBoardUno
- de.wikipedia.org/wiki/Arduino_(Plattform)
- github.com/adafruit/Adafruit-Motor-Shield-library/zipball/master
- code.google.com/p/arduino-new-ping/downloads/detail?name=NewPing_v1.5.zip&can=2&q
- itzwieseltal.wordpress.com
- itzwieseltal.wordpress.com/2015/08/13/simpler-arduino-roboter/
- www.youtube.com/watch?v=I5vKAYMB4Xo