Aus RN-Wissen.de
Version vom 24. November 2013, 21:07 Uhr von Frank (Diskussion | Beiträge) (Arduino Boards unter Bascom programmieren)

Wechseln zu: Navigation, Suche
Rasenmaehroboter Test

Was bedeutet „Arduino" oder "Arduino kompatibel“

Ein zu Arduino Uno kompatibles Board

Die Arduino-Plattform ist eine aus Soft- und Hardware bestehende Plattform. Beide Komponenten sind im Sinne von Open Source quelloffen. Die Hardware besteht aus einem I/O-Board mit einem Mikrocontroller (meisst der Serie Atmel AVR) und analogen und digitalen Ein- und Ausgängen. Die Entwicklungsumgebung IDE unterstützt die Programmiersprache C und und ist frei verfügbar. Sie soll insbesondere Bastlern und anderen Interessierten den Einstieg zur Programmierung und zu Mikrocontrollern erleichtern und stellt eine Alternative zu anderen, oft komplexeren Entwicklungsumgebungen wie Atmel Studio oder Bascom dar.

Ein Arduino oder Arduino kompatibles Board kann verwendet werden, um eigenständige interaktive Objekte zu steuern oder um mit Softwareanwendungen auf Computern zu interagieren (z. B. Adobe Flash, Processing, diversen Skriptsprachen). Arduino wird intensiv an Kunsthochschulen genutzt, um interaktive Installationen aufzubauen. Das Arduino-Projekt erhielt 2006 eine Anerkennung im Rahmen des Prix Ars Electronica in der Kategorie Digital Communities.

In welcher Sprache programmiert man Arduino Boards

Boards die Arduino kompatibel sind, können in den meisten Fällen auch mit Entwicklungsumgebungen/Programmiersprachen wie Atmel Studio oder Bascom Basic, WinAvr/GCC programmiert werden, für erste Versuche dürfte aber die Arduino IDE der schnellste und einfachste Weg sein. Bei komplexeren Anwendungen scheiden sich die Geister, hier werden von erfahreneren Programmierern oft eine der anderen Entwicklungsumgebungen/Programmiersprachen vorgezogen.

Der Anwender hat also die freie Wahl und kann natürlich auch jederzeit von der ein oder anderen Umgebung umsteigen.

Ich persönlich bevorzuge die Entwicklungsumgebung Bascom und kann diese nur empfehlen. Mit ihr kann man sehr produktiv arbeiten,das heißt die meisten Aufgaben lassen sich dort weit schneller umsetzen als in C. Das liegt schon, das in der Regel deutlich weniger Codezeilen in Bascom notwendig sind und der Code leichter lesbar ist. Die Vorurteile gegenüber der Sprache Basic sollte man ignorieren, Bascom hat mit dem ursprünglichen Basic von früher nicht mehr viel gemeinsam, außer das es fast genauso leicht erlernbar ist. Die Funktionen von Bascom (Library) sind fast durchweg in Assembler implementiert, wodurch die Programm in der Regel oft genauso oder sogar schneller als compilierte C-Programme ablaufen. C hat nur den Vorteil, das der Code besser auf andere Controller außerhalb der AVR-Serie portierbar ist.

Natürlich muss man beim programmieren unter Bascom auch nicht auf den Komfort der Programmierung per USB (ohne Programmer per Bootloader) verzichten, siehe Tipps weiter unten!

Arduino Boards unter Bascom programmieren

Viele erfahrenere Programmierer bevorzugen bei der Programmierung den Bascom Compiler. Eine Version bis zu 4k Programmcode ist ebenfalls kostenfrei, empfehlenswerter ist natürlich die Vollversion.

Wenn per ISP-Programmer programmiert wird ist hier nichts weiter zu beachten da alle Arduino Boards auch eine ISP-Buchse besitzen. Unter den Programmer-Einstellungen in bascom wird einfach der entsprechenden ISP-Programmer ausgewählt. In der Regel der Vorgang in der Programmer Dokumentation auch noch mal beschrieben. Empfehlenswert ist unter Bascom der spezielle Bascom USB-ISP-Programmer. Dieser Programmer, sowie viele anderen besitzen jedoch einen 10 poligen Anschluss, daher wird ein Adapter benötigt (10 auf 6). Diesen kann man leicht selber basteln oder fertig im Shop (z.B. RobotikHardware.de) bestellen.

Man kann aber auch in Bascom ohne Programmer per USB programmieren

Es lässt sich jedoch auch der ganz normale „Bootloader“ nutzen, der bereits in Arduino kompatiblen Boards schon vorhanden ist. Dazu ist es lediglich notwendig, einmalig einige Einstellungen vorzunehmen.

Zunächst benötigt man das Programm avrdude. Auf der Robotikhardware.de-DVD ist das bereits fertig entpackt und mit der zugehörigen USB-DLL libusb0.dll zusammengestellt, man braucht also nur den Ordner kopieren! Ansonsten kann man es auch über das Internet laden (link unten), man muss aber darauf achten das man auch die zugehörige Datei libusb0.dll nicht vergisst, man kann sie in das gleiche Verzeichnis von avrdude kopieren.

1. Zunächt kopiert man den Ordner „avrdude“ mit allen Dateien auf die Festplatte unter C:\

2. Danach wählt man in Bascom unter Optionen/Programmer die Einstellung:

Extern Programmer

Unter Programm wählen man den Pfad, also:

C:\avrdude\avrdude.exe

Und unter Parameter geben Sie folgende Zeile an:

-C c:\avrdude\avrdude.conf -p m328p -P com9 -c arduino -b 115200 -U flash:w:{FILE}:i

Wenn das Arduino Board nicht an COM9 hängt, muss gegebenenfalls einen anderen COM-Port innerhalb dieser Zeile angeben werden. COM9 muss dann durch z.B. COM3, COM4 usw. ersetzt werden. Das war es, ab nun lassen sich auch unter Bascom die Arduino kompatiblen Boards genauso einfach programmieren wie aus der Arduino IDE. Der große Vorteil von Bascom ist die leistungsstärkere IDE mit mehr Möglichkeiten und die der umfangreiche Befehlssatz von Bascom. Zudem ist Bascom deutlich leicht programmierbar und man erreicht Ziele in der Regel deutlich schneller und mit meist wesentlich weniger Programmzeilen. Trotzdem sind Bascom Programme in der Regel genauso schnell, teils sogar schneller als C Programme, da die Funktionen zum großen teil in Assembler implementiert sind.

Ein Bild veranschaulicht noch mal die Einstellungen unter Bascom! Getestet mit Windows 7 64 Bit!


ArduinoBascomBootloader.jpg

Ein Bascom Beispielprogramm für Arduino Uno kompatible Boards

'##############################################################
'Blink.bas
'
'Ein  Testprogramm für Arduino Uno kompatible Boards
'
'Das Programm stellt den Port PB5 (Pin 13) auf Ausgang und
'schaltet ihn im Sekundentakt zwischen Low und High um
'Die Led auf dem Board blinkt also
'
'Bascom- und ArduinoTM kompatible Boards sowie Bascom-Compiler
'erhältlich bei www.robotikhardware.de
'Weitere Beispiele auf DVD von RobotikHardware oder in den Portalen
'www.Roboternetz.de und rn-wissen.de
'######################################################################





$regfile = "m328pdef.dat"
$framesize = 32
$swstack = 32
$hwstack = 64

$crystal = 16000000     'Resonatorfrequenz
$baud = 9800           'Baudrate (Übertragungsgeschwindigkeit)
Baud = 9800



Config PortB.5 = Output

Do
    PortB.5=1
    wait 1
    PortB.5=0
    wait 1
Loop

Das gleiche Programm als übliches C Sketch würde in etwa so aussehen

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */
 
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);     
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}


Die serielle Ausgabe geht in Bascom natürlich auch über das USB Kabel

Man braucht also kein zweites Kabel anschließen um zu Programmieren oder Daten abzurufen

Bascomarduinoseriell.png

'##############################################################
'RS232Test.bas
'
'Ein  Testprogramm für Arduino Uno kompatible Boards
'
'Das Programm stellt den Port PB5 (Pin 13) auf Ausgang und
'schaltet ihn im Sekundentakt zwischen Low und High um
'Die Led auf dem Board blinkt also
'Zudem wird die Variable z jede Sekunde um 1 erhöht und
'ein Satz über die serielle Schnittstelle ausgegeben
'Mit einem Terminalprogramm kann man die Daten empfangen
'
'
'Bascom- und ArduinoTM kompatible Boards sowie Bascom-Compiler
'erhältlich bei www.robotikhardware.de
'Weitere Beispiele auf DVD von RobotikHardware oder in den Portalen
'www.Roboternetz.de und rn-wissen.de
'######################################################################



$regfile = "m328pdef.dat"
$framesize = 32
$swstack = 32
$hwstack = 64

$crystal = 16000000     'Resonatorfrequenz
$baud = 9800           'Baudrate (Übertragungsgeschwindigkeit)
Baud = 9800


dim z as integer

Config PortB.5 = Output

z=0
Do
    Print "Hallo - Ich zaehle: "; z
    incr z
    toggle   PortB.5
    wait 1
Loop

Portbelegung von Arduino Uno kompatiblen Boards

ArduinoUnoPortbelegung.jpg


Autoren

--Frank 14:51, 22. Nov 2013 (CET)

Hinweis

Arduino™ ist ein eingetragenes Markenzeichen von Arduino LLC und den damit verbundenen Firmen http://www.arduino.cc/ - Englische Projektseite

Weblinks

Siehe auch


LiFePO4 Speicher Test