Hallo Gemeinde, ich komme gerade nicht so recht weiter. Ich habe mir folgende Schaltung gekauft. http://www.ebay.de/itm/161194580527?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649 Aus Platzgründen habe ich mich für das kleine Fertige entschieden. Ich kriege das Teil aber nicht zum Laufen. PC erkennt es als Arduino Leonardo. Jetzt ist die Frage mit welchem Programm kann ich den Code brennen? Hat jemand evtl. den richtigen Code für mich da? Ich brauche nur eine einfache Entprellung. Wenn Taster gedrückt soll auch ein Ausgang "an" gehen. Der Rest kann Ignoriert werden. Vielen Dank -Daniel
Hallo, > Daniel Q. schrieb: > Jetzt ist die Frage mit welchem Programm kann ich den Code brennen? entweder Arduino IDE oder mit original Bootloader und http://www.atmel.com/tools/flip.aspx Um aber den original Bootlader auf den Atmega zu bekommen bräuchtest du einen Brenner(z.B. AVRISP mkII). Gruß G.G.
Hallo und Guten Morgen, den Arduino IDE 1.0.5 r2 habe ich jetzt Installiert. Worin bestehen die Vor- bzw. Nachteile von Arduino und Atmel Bootloader? Ich habe mich mal etwas Schlau gelesen. Im Forum stehen mehrere Varianten zum entprellen. http://www.mikrocontroller.net/articles/Entprellung#Softwareentprellung Die Frage ist nur welche für mein Vorhaben am Sinnvollsten ist. Gruß Daniel
:
Bearbeitet durch User
Daniel Q. schrieb: > Hat jemand evtl. den richtigen Code für mich da? Hausaufgaben müssen selber gemacht werden. Sonst lernt man nichts... > Ich brauche nur eine einfache Entprellung. > Wenn Taster gedrückt soll auch ein Ausgang "an" gehen. Wozu soll bei dieser simplen Aufgabe der Taster entprellt werden? Lies einfach den Taster-Pin ein und gib ihn auf dem LED-Pin wieder aus. Daniel Q. schrieb: > Die Frage ist nur welche für mein Vorhaben am Sinnvollsten ist. Ich würde das an deiner Stelle einfach mal ausprobieren! Das Gute daran ist: Man lernt dabei. > Die Frage ist nur welche für mein Vorhaben am Sinnvollsten ist. Woher soll irgendwer wissen, was dein "Vorhaben" ist?
Servus Daniel, ich denke mir die ganze Zeit: "Jung wat hast du vor?". Wir reden doch hier vom entprellen. Also allgemein funktioniert das so: 1. Timer initialisieren 2. Pin intialisieren und auf Event warten 3. Bei Auftreten des gewünschten Events, Timer starten 4. Bei Ablauf des Timers schauen ob der Pin immer noch dem gewünschten Zustand entspricht. Je nach Zustand kannst du dann ja darauf reagieren. Beste Grüße public
public schrieb: > Also allgemein funktioniert das so: Hach. Wenn man für jeden Pin einen Timer verwalten muss, dann wirds aber schnell umständlich... Dank Peter Danneggers genialem "Massive Parallel Counter Code" (;-) entprelle ich z.B. ein 32er Orgelpedal mit gerade mal 8 Byte.
:
Bearbeitet durch Moderator
Hallo und vielen Dank für die Anteorten. Ich habe hier eine MosFet Motor Schaltung und einen stark Prellenden Taster. Die MosFet Schaltung hat ein MosFet als Bremse verbaut. Drückt man den Taster dreht sich der Motor. Lässt man den Taster los, bremst das zweite Fet den Motor. Und mit dem Prellenden Taster ist das ein Problem. Da habe ich mir gedacht yC dazwischen, Entprellung rein und fertig. Irgendwann soll das mal erweitert werden, bzw. Ausgebaut. Taster kann auch leider nicht getauscht werden. Gruss Daniel
Daniel schrieb: > Und mit dem Prellenden Taster ist das ein Problem. Da habe ich mir > gedacht yC dazwischen, Entprellung rein und fertig. Da geht aber auch ein RC-Glied + 74HC14, 74HC132 oder 74HC4093. Oder wenn es mit mehr als 5V betrieben werden soll CD4093. Gruß Dietrich
Dietrich L. schrieb: > Da geht aber auch ein RC-Glied Ja klar, bei 32kB Flash machen 30 gesparte Bytes ja auch enorm viel aus. Da lohnt sich das Layouten und Löten zusätzlicher Komponenten so richtig.
Peter Dannegger schrieb: > Dietrich L. schrieb: >> Da geht aber auch ein RC-Glied > > Ja klar, bei 32kB Flash machen 30 gesparte Bytes ja auch enorm viel aus. > Da lohnt sich das Layouten und Löten zusätzlicher Komponenten so > richtig. Ich kann dir da nicht einmal widersprechen, denn €6.50 sind ein Argument, gegen das man nur schwer ankommt. Da spielt es dann auch keine Rolle mehr, dass ein 32U4 für diese Aufgabe Perlen vor die Säue bedeutet. Die einzige Variable ist es, wie lange es dauert, bis er das Programm fertig und in den µC gebrannt hat. Da könnte unter Umständen Layout und Löten eines klassischen Entprellers für ein Einzelstück effizienter sein. Nur damit wir vom selben reden. Wenn er die 30 Bytes 'einspart', dann ist sein Flash-Verbrauch bei 0. Der ganze Arduino fällt weg. Seine einzige AUfgabe ist es, einen einzigen Taster zu entprellen :-)
:
Bearbeitet durch User
Karl Heinz schrieb: > Da spielt es dann auch keine > Rolle mehr, dass ein 32U4 für diese Aufgabe Perlen vor die Säue > bedeutet. Woher weißt Du das? Er will doch noch weitere Sachen hinein programmieren: Daniel schrieb: > Irgendwann soll das mal erweitert werden, bzw. Ausgebaut.
Peter Dannegger schrieb: > Dietrich L. schrieb: >> Da geht aber auch ein RC-Glied > > Ja klar, bei 32kB Flash machen 30 gesparte Bytes ja auch enorm viel aus. > Da lohnt sich das Layouten und Löten zusätzlicher Komponenten so > richtig. Darum geht es nicht. Wenn Daniel nur den Taster entprellen will (mehr hat er in seiner Beschreibung nicht gewollt), kann es sich den ganzen Arduino + Programmierung sparen und braucht auch keinen Brenner. Wenn er allerdings den µC für andere Dinge sowieso braucht, hast Du natürlich recht. Dann würde ich mein RC-Glied auch nicht empfehlen. Gruß Dietrich
Peter Dannegger schrieb: > Karl Heinz schrieb: >> Da spielt es dann auch keine >> Rolle mehr, dass ein 32U4 für diese Aufgabe Perlen vor die Säue >> bedeutet. > > Woher weißt Du das? Posting von heute (23.1) um 09:17 (Ich kann leider keinen Link setzen, da ich hinter einem WebProxy sitze) > Er will doch noch weitere Sachen hinein programmieren: Ja, irgendwann
Peter Dannegger schrieb: > Daniel schrieb: >> Irgendwann soll das mal erweitert werden, bzw. Ausgebaut. OK, dann nehme ich meinen Vorschlag mit dem RC-Glied zurück ;-)
Hallo und vielen Dank für die ganzen Beiträge und hinweise. Ich weiß das der 32U4 etwas zu "groß" ist. Ich werde bestimmt nicht alles brauchen was der kann. Und auch nicht ausnutzen. Aber klein und Günstig. Das war das ausschlaggebende. Ich habe das jetzt alles auf meinem Steckbrett so aufgebaut. Leider Funktioniert es nicht. Ich habe jetzt so gemacht wie es dort steht.
1 | const int buttonPin = 2; // the number of the pushbutton pin |
2 | const int ledPin = 13; // the number of the LED pin[avrasm] |
Ich habe den Code Kompiliert und aufgespielt. Aber leider kein Ergebnis. Hier ist auch mal der Schaltplan. http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Boards/Pro-Micro-v11-5V_B.pdf
:
Bearbeitet durch User
Daniel Q. schrieb: > Ich habe jetzt so gemacht wie es dort steht. Wie es wo steht. Da wurden immerhin 2 Links gepostet > >
1 | > const int buttonPin = 2; // the number of the pushbutton pin |
2 | > const int ledPin = 13; // the number of the LED pin[avrasm] |
3 | >
|
> > Ich habe den Code Kompiliert und aufgespielt. Das kann aber nicht alles sein. Zeig den ganzen Code! Und zwar nicht wie er irgendwo auf einer Webseite steht, sonder so wie du ihn bei dir compilierst und brennst. Hast du eigentlich schon einen ersten Funktionstest mit deinem Arduino gemacht. Ganz simpel eine LED einschalten, ausschalten?
Daniel Q. schrieb: > Hier ist auch mal der Schaltplan. > > http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Dev/Arduino/Boards/Pro-Micro-v11-5V_B.pdf Der kann aber nicht stimmen. Denn in dem Schaltplan ist am Pin D13 keine LED eingezeichnet. Bitte poste immer die Situation, so wie sie bei dir vorliegt!
Karl Heinz schrieb: > Daniel Q. schrieb: > Da wurden immerhin 2 Links gepostet Ich bin nach dem Tutorial gegangen.
1 | >> const int buttonPin = 2; // the number of the pushbutton pin |
2 | >> const int ledPin = 13; // the number of the LED pin[avrasm] |
3 | >>
|
>> Ich habe den Code Kompiliert und aufgespielt. > > Das kann aber nicht alles sein. > Zeig den ganzen Code! Das war auch nur als Ausschnitt gedacht. Habe jetzt gesehen, das ich aus versehen den A3 als Ausgang genommen hatte. Welchen wert muss ich da denn jetzt eintragen? > Und zwar nicht wie er irgendwo auf einer Webseite steht, sonder so wie > du ihn bei dir compilierst und brennst. Ich habe das alles eingefügt und dann Kompilieren und hochladen gedrückt. http://arduino.cc/en/Tutorial/Debounce?action=sourceblock&num=1 > Hast du eigentlich schon einen ersten Funktionstest mit deinem Arduino > gemacht. Ganz simpel eine LED einschalten, ausschalten? Nein.
Hallo, ich habe mich heute mal etwas genauer mit dem Thema auseinander gesetzt. Mein Code.
1 | // set pin numbers: |
2 | const int buttonPin = 14; // the number of the pushbutton pin |
3 | const int ledPin = 15; // the number of the LED pin |
4 | |
5 | // Variables will change: |
6 | int ledState = HIGH; // the current state of the output pin |
7 | int buttonState; // the current reading from the input pin |
8 | int lastButtonState = LOW; // the previous reading from the input pin |
9 | |
10 | // the following variables are long's because the time, measured in miliseconds, |
11 | // will quickly become a bigger number than can be stored in an int. |
12 | long lastDebounceTime = 0; // the last time the output pin was toggled |
13 | long debounceDelay = 50; // the debounce time; increase if the output flickers |
14 | |
15 | void setup() { |
16 | pinMode(buttonPin, INPUT); |
17 | pinMode(ledPin, OUTPUT); |
18 | |
19 | // set initial LED state |
20 | digitalWrite(ledPin, ledState); |
21 | } |
22 | |
23 | void loop() { |
24 | // read the state of the switch into a local variable: |
25 | int reading = digitalRead(buttonPin); |
26 | |
27 | // check to see if you just pressed the button |
28 | // (i.e. the input went from LOW to HIGH), and you've waited |
29 | // long enough since the last press to ignore any noise: |
30 | |
31 | // If the switch changed, due to noise or pressing: |
32 | if (reading != lastButtonState) { |
33 | // reset the debouncing timer |
34 | lastDebounceTime = millis(); |
35 | } |
36 | |
37 | if ((millis() - lastDebounceTime) > debounceDelay) { |
38 | // whatever the reading is at, it's been there for longer |
39 | // than the debounce delay, so take it as the actual current state: |
40 | |
41 | // if the button state has changed: |
42 | if (reading != buttonState) { |
43 | buttonState = reading; |
44 | |
45 | // only toggle the LED if the new button state is HIGH |
46 | if (buttonState == HIGH) { |
47 | ledState = !ledState; |
48 | } |
49 | } |
50 | } |
51 | |
52 | // set the LED: |
53 | digitalWrite(ledPin, ledState); |
54 | |
55 | // save the reading. Next time through the loop, |
56 | // it'll be the lastButtonState: |
57 | lastButtonState = reading; |
58 | } |
Ich habe es so wie in dem Tut ( http://www.arduino.cc/en/Tutorial/Debounce) beschrieben erst mal auf ein Steckbrett gesteckt. Soweit funktioniert alles. Allerdings ist mir aufgefallen das ich die LED wie mit einem Schalter schalte. Was muss man ändern damit ich sie nur Taste?
Daniel Q. schrieb: > Soweit funktioniert alles. Allerdings ist mir aufgefallen das ich die > LED wie mit einem Schalter schalte. Das ist doch perfekt. Schliesslich hast Du am Anfang geschrieben: Daniel Q. schrieb: > Wenn Taster gedrückt soll auch ein Ausgang "an" gehen. wendelsberg
wendelsberg schrieb: > Daniel Q. schrieb: > Das ist doch perfekt. Schliesslich hast Du am Anfang geschrieben: > > Daniel Q. schrieb: >> Wenn Taster gedrückt soll auch ein Ausgang "an" gehen. > > wendelsberg Da habe ich mich dann etwas Unglücklich ausgedrückt. Der Ausgang soll auch nur so lange "an" sein wie der Taster gedrückt ist.
Daniel Q. schrieb: > Der Ausgang soll > auch nur so lange "an" sein wie der Taster gedrückt ist. Dann ist das meiste ueberfluessig, also:
1 | void loop() { |
2 | // read the state of the switch into a local variable:
|
3 | int ButtonState = digitalRead(buttonPin); |
4 | // set output
|
5 | digitalWrite(ledPin, ButtonState); |
6 | }
|
Daniel Q. schrieb:
1 | void loop() { |
2 | // read the state of the switch into a local variable: |
3 | int reading = digitalRead(buttonPin); |
4 | |
5 | // check to see if you just pressed the button |
6 | // (i.e. the input went from LOW to HIGH), and you've waited |
7 | // long enough since the last press to ignore any noise: |
8 | |
9 | // If the switch changed, due to noise or pressing: |
10 | if (reading != lastButtonState) { |
11 | // reset the debouncing timer |
12 | lastDebounceTime = millis(); |
13 | } |
14 | |
15 | if ((millis() - lastDebounceTime) > debounceDelay) { |
16 | // whatever the reading is at, it's been there for longer |
17 | // than the debounce delay, so take it as the actual current state: |
18 | |
19 | // if the button state has changed: |
20 | if (reading != buttonState) { |
21 | buttonState = reading; |
22 | |
23 | // only toggle the LED if the new button state is HIGH |
24 | if (buttonState == HIGH) { |
25 | ledState = !ledState; |
26 | } |
27 | } |
28 | } |
29 | |
30 | // set the LED: |
31 | digitalWrite(ledPin, ledState); |
32 | |
33 | // save the reading. Next time through the loop, |
34 | // it'll be the lastButtonState: |
35 | lastButtonState = reading; |
36 | } |
Das kann dann raus oder?
Daniel Q. schrieb: > Das kann dann raus oder? Exakt. Etwas zu machen SOLANGE eine Taste gedrückt wird, ist leicht. Du liest den Tastenzustand ein und bist ... fertig. Je nachdem kann es sein, dass man noch eine kleine Entprellung braucht, damit die paar Preller im Millisekundenraster nicht dafür sorgen, dass das Licht zb 3 mal kurz im Millisekundenbereich flackert (was ein Lichtsensor durchaus feststellen könnte), oder dass ein Motor nicht mit einem 3 maligem 'Stotterer' anläuft (was er nicht tun wird, denn dazu ist er zu träge). Aber abgesehen davon ist die grundlegende Strategie: einfach einlesen. Schwieriger ist es, etwas beim Niederdrücken einer Taste nur ein einziges mal zu machen. Denn jetzt wirkt sich das mögliche Prellen aus. Für den µC ist Tastenprellen nicht von "mein Benutzer hat die Taste 3 mal schnell hintereinander gedrückt" grundsätzlich zu unterscheiden. Nur das für den µC das eine in Zeitlupe passiert und das andere in Superzeitlupe. Und genau da ist dann auch der Entprellansatz: 'Drückt der Benutzer die Taste zu schnell, dann war das kein Benutzer, der an der Taste rumgefummelt hat, sondern der Taster hat geprellt'.
Guten Abend, > Ich habe mir folgende Schaltung gekauft. > Ebay-Artikel Nr. 161194580527 ist das nur bei mir oder steht dort ernsthaft 106 Euro pro Stück?! _.-=: MFG :=-._
Ist das nicht Günstig? ;-) Wird ein Fehler sein. Ich hab zumindest nur EUR 6,45 bezahlt. :-D
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.