Hallo zusammen

Grüße zusammen,

welche deutsche Literatur würdet ihr für den Einstieg empfehlen?
Steige da nicht so ganz durch im englischen.

Ein klein wenig c++ Erfahrung habe ich aus meiner Ausbildung
und rudimentäre Grundlagen der Elektrotechnik sind auch vorhanden.

Also vielen Dank schon mal für Tipps. :slight_smile:

Willkommen im Forum!

Mein derzeitiger Liebling ist Rheinwerk Computing :: C von A bis Z für allgemein C. Oder auch AVR-GCC-Tutorial – Mikrocontroller.net.

Hallo,

in welcher Richtung brauchst du denn Unterstützung?
Reine C/C++ Programmierung oder Elektronik und Programmierung im Zusammenhang mit Arduino?

Ersteres was agmue empfielt.
Zweiteres vielleicht http://www.oreilly.de/catalog/elekarduinobas2ger/
Ich habe davon das Vorgängerbuch. Ich kam damit klar für den Einstieg. Auch wenn man sicherlich nicht alle Bsp. nachbaut, hilft es für das Verständnis. Das perfekte Buch gibts sowieso nicht.

Ich hab mir das hier gegönnt.
Es gilt das gleiche wie schon gesagt: kein Buch ist perfekt für alles zu gebrauchen.

Also ich hatte vor 14 Jahren mal eine Ausbildung zum Fachinformatiker erfolgreich absolviert.
Da lernte ich Grundlagen in C++.
Hab mich danach noch 1-2 Jahre weiter etwas reinprobiert mit mäßigem erfolg.
Dann ein Job Frau Familie und keine Zeit mehr.
Jetzt kommt die Zeit wieder und das C++ ist natürlich rostiger wie je zuvor,
wobei mir vieles wenn ich mir die Beispiele ansehen sehr vertraut vorkommt.
Daher währe mir eine Referenz die mir die Arduinospezifischen Befehle in C erläutert ganz recht.
Als Buch für C++ habe ich hier das ISBN 3-446-21723-1

Die CD dazu liegt mir allerdings nicht mehr vor.

Das hier währe doch denke ich was
Als Compiler ist ja die Arduinoplatform nun das hoffentlich neue Zuhause.

Ich habe mir bereits einen Mega 2048 R3 bestellt.
Von früheren Basteleien sind noch einige Bauteile vorhanden.
(Wiederstände, Trasistoren, Mosfets, LED's, Laiserdioden, Potis, Prototypsteckplatten, usw.)

Das von Doc... empfohlene http://www.oreilly.de/catalog/elekarduinobas2ger/ währe doch etwas denke ich.

Nach diesen Büchern "Kochbuch Arduino". Das ist ein gutes Buch, aber nur mit Vorkenntnissen zu verstehen.

Eine Referenz der arduinospezifischen Funktionen findest Du unter Arduino - Home . Weitere Funktionen werden durch die verwendeten Bibliotheken definiert und darum mußt Du diese in den mitgelieferten Beisoielen und teilweise durch ansehen der Files verstehen. Da diese Bibliotheken nur teilweise von Arduino stammen kann diese Seite sie nicht erklähren.

Grüße Uwe

Also ich habe mir das von Doc_Arduino empfohlene Buch bestellt.
Ich danke schon mal für die Tips und freue mich schon drauf wenn es da ist.

Hallo,

dann hoffe ich das das Buch für dich richtig ist. :slight_smile:

Vorweg. In der Arduino IDE kannst du natürlich jederzeit klassisch C/C++ programmieren. Die Arduino'schen Komfortbefehle sind nur ein zusätzlicher Aufsatz obendrauf. Damit man es leichter hat. Man muß ja nicht unbedingt jeden Pin und Port direkt mit seinem Register ansprechen, wie man es sonst machen müßte. Falls man das doch einmal machen sollte oder muß oder rein aus Neugier, haste hier eine schöne Übersicht. Oder eben das µC Datenblatt.

http://www.pighixxx.com oben Pinpouts > Boards , dann blättert man durch und kann das als pdf runterladen.

Ich habe eine Schaltung zusammen gesetzt,
die einfach nicht macht was sie soll.

Der Taster ist mit 10k Ohm gegen Grund auf LOW gesetzt.

Eigentlich soll beim tastedrücken die LED angehen,
wenn sie aus ist und aus gehen,
wenn sie an ist.

Aber sie ist aus und geht nur an,
solange ich den Taster drücke.
Ich verstehen nicht was ich falsch mache.

int LedPin = 4;
int TasterPin =  8;
int TasterStatus;
int Zustand = 0;
void setup() 
{
pinMode(LedPin, OUTPUT);
pinMode(TasterPin, INPUT);
}

void loop() 
{
TasterStatus = digitalRead(TasterPin);

if((TasterStatus == HIGH)&&(Zustand == 0))
 {
 digitalWrite(LedPin, HIGH);
 Zustand = 1;
 }
 
if((TasterStatus == HIGH)&&(Zustand == 1))
 {
 digitalWrite(LedPin, LOW);
 Zustand = 0;
 }
 
}

Beles Dich mal zu dem Abschnitt "Taster entprellen" bzw. Debounce :wink:
Eine erneute Tasterabfrage müsstest Du mit millis() oder delay() verzögern....

Wendel:
Der Taster ist mit 10k Ohm gegen Grund auf LOW gesetzt.

Ähh, ich denke das passt schon mal nicht.
Aktiviere den internen Pullup und schalte den Taster gegen GND, also dass auf aktive LOW geprüft wird.
Spart nen Widerstand, invertiert aber die Logik. Macht aber nix :slight_smile:

Ok danke für den Tip.
Ich mal schau was ich finde.

(o.o)

Das ist ja der Horror das zu verstehen oder zu finden. -.-

Wendel:
Das ist ja der Horror das zu verstehen oder zu finden. -.-

Möglicherweise hilft Dir dieser Link: Eine LED per Tastendruck aktivieren

Der Teil ist ja nicht mein Problem.

ich will ja über den Taster einmal drücken LED an und wenn an über ein mal drücken aus machen.

#include <Bounce2.h>

int LedPin = 4;
int TasterPin =  8;
int TasterStatus;
int Zustand = 0;
Bounce  bouncer  = Bounce();
void setup() 
{
pinMode(LedPin, OUTPUT);
pinMode(TasterPin, INPUT);
bouncer.attach(TasterPin);
bouncer.interval(5);
}
void loop() 
{
TasterStatus = digitalRead(TasterPin);
bouncer.update();
if((TasterStatus == HIGH)&&(Zustand == 0))
 {
 digitalWrite(LedPin, HIGH);
 Zustand = 1;
 }
if((TasterStatus == HIGH)&&(Zustand == 1))
 {
 digitalWrite(LedPin, LOW);
 Zustand = 0;
 }
}

Hab es so umgeschrieben,
da ich die "Arduino Playground - Bounce" Lib eingehängt habe.
Aber bin mir nicht sicher,
da es noch immer nicht funktioniert,
ob nicht noch was anderes falsch ist.

Schau dir die Beispiele aus der Bounce Lib an. Du verwendest die völlig falsch. Was bringt es dir update() zu machen, wenn du letztlich doch nur digitalRead() verwendest? Da kannst du die Lib auch gleich weglassen

void loop() 
{
  bouncer.update();

  int value = bouncer.read();

  digitalWrite(LedPin, value);
}

Ich glaub das ist mein Ende ich verstehe es einfach nicht.

Ich hab mit dem Englisch meine Probleme finde keine Lib die Irgendwas erklärt?!? auf der Webseite steht ja nur:
Change the creation of the object

from:
Bounce bouncer = Bounce(inputPin, 5);
to :
Bounce bouncer = Bounce();
Initialize the object in setup

from :
*not required with the previous version
to (inside setup) :
// Setup the button
pinMode( inputPin ,INPUT);
// Activate internal pull-up (optional)
digitalWrite( inputPin ,HIGH);
// After setting up the button, setup the object
bouncer .attach( inputPin );
bouncer .interval(5);

Der Fehler muss auch wo anders sein selbst wenn ich delay(10000); einfüge bleibt die LED 10 Sec an und geht dann aus also am Taster liegt es nicht.

In jeder guten Library sind Beispiele dabei. Auch hier. Dafür hat doch die IDE einen extra Menüpunkt unter Datei -> Beispiele

Erst ruft man ständig update() auf, damit das Objekt intern seinen Zustand aktualisiert. Die Methode liefert außerdem zurück ob sich der Zustand geändert hat. Das könnte man noch abfragen, aber das ist nicht immer zwingend nötig.

Den Zustand kann man dann mit drei Methoden abfragen
read();
fell();
rose();

read() liefert den Zustand zurück. fell() liefert zurück ob man eine fallende Flanke hat. Und rose() ob es eine steigende Flanke war.

Danke für den Tip.

Mir ist aufgefallen,
dass ein Druck auf den Taster das Programm immer wieder über sich laufen lässt.
Einen 50er delay sorgt bei ein mal drücken für mehr maliges kurzes blinken.

Zeig doch mal Dein aktuelles Programm...