hulp gevraagd bij een Arduino CW keyer projectje.

Hi forumleden,

Ik ben bezig met een Arduino CW Keyer Projectje met de Arduino Mega, 2560 geschreven door een radioamateur KF4BZT.
Je kunt het vinden op de site: https://kf4bzt.wordpress.com/2015/08/06/arduino-cw-keyer-project/.

Hij beschrijft daarin eenzelfde projectje als K3NG maar dan voor mijn Arduino Mega 2560 die een andere pin bezetting heeft. Voor een beginneling, zoals ik ben, leek dit een simpele beschrijving, ook wat de installatie van de firmware betreft.

Het probleem voor mij begint bij de volgende beschrijving voor het aanvullen met een ledje:

Now we need to add an LED so that we know if the command mode is active.
As you can see, I connected the positive lead to digital pin 26 with a 220k resistor in line to protect the bulb. The negative side of the LED is connected to the ground just above it. The program is telling port 26 that when the button is pressed, it should turn the LED on as a status reminder that we are in command mode of the keyer.

#ifdef FEATURE_COMMAND_BUTTONS
#define analog_buttons_pin A0
#define command_mode_active_led 26
#endif //FEATURE_COMMAND_BUTTONS

Dan laat hij verderop het schema zien, waarin allereerst 5 weerstandjes van 10K te zien zijn, daar waar ze voorgaande altijd 1K zijn geweest.

Maar wat ik niet snap is, dat hij zomaar 3 V op de digitale pin 26 zet.
En hij zegt dat ter bescherming van de Led een 220K moet worden geplaatst.
Het gaat hier om R8 en R4.

Kijk ik nu naar de afbeeldingen, met ledje "aan"en "ledje uit"dan zie ik dat pin 26 helemaal niet op zijn breadboard is aangesloten.

#define command_mode_active_led 26

Wie wil mij daarmee helpen en de moeite te nemen naar de boven vermelde website te gaan.

Alvast dank voor enige respons.

De weerstand in serie met de Led 220K moet 470 ohm zijn anders zie je die Led nooit oplichten.
De constructie met de verschillende drukknoppen en weerstanden is om een ratio van spanningen te verkrijgen op de analoge ingang.Op die manier kun je met 1-ingang verschillende posities van de drukknoppen inlezen(dit is meestal om ingangen te sparen voor iets anders).En uiteraard pin26 bezigen.
Brugdraad verwijderen tussen +5V en D26.

Allereerst bedankt voor je antwoord.

Toch blijven er nog 2 vragen over en wel de volgenden:

En uiteraard pin26 bezigen

Wat bedoel je hiermee, waar moet ik pen D26 op aansluiten?

De constructie met de verschillende drukknoppen en weerstanden is om een ratio van spanningen te verkrijgen....

Ik denk ook hier dat in het schema m.b.t. R6, R5 R3 en R7 de waarden 1K moeten zijn en die van R8 10K, verbonden met de Analoge pin A0, zoals hij eerder beschrijft.

Graag jouw reactie,
Cees vd Laan

Op 3 september 2017 13:54:21 schreef Gij Kieken:
De weerstand in serie met de Led 220K moet 470 ohm zijn anders zie je die Led nooit oplichten.

Oh?

Links de 1M (code: 1004) en 470k weerstanden (474)... Het werkt toch echt.... :-)

De linker is voor de "motorspanning" van m'n ESC. Die heeft altijd prima gewerkt bij 20-55V. De huidige versie, waar ik vandaag mee bezig ben, dan komt de motorspanning niet meer op deze print en blijft de led dus uit. Bij de 12V mik ik dus op rond de 21 microampere voor de ledstroom. Hij is dan wel een stuk zwakker dan die van de 3.3V waar zo'n 25 microampere doorheenloopt.

Maar goed. Dit zijn "bijzonder efficiente" leds. Dat kan je vantevoren niet weten hoe goed ze zijn. Zet je een 1k weerstand als serieweerstand, gaat je led (tot zo'n 20V) niet kapot, en is het ongemakkelijk omdat ie zo fel is.... Dan zet je er tzt een grotere weerstand in. Werkt altijd. Doe je zoals ik (zeg 470k) dan kan het zijn dat je je ledje niet ziet terwijl dat wel zou moeten. Dat is vervelend foutzoeken.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

Ik begrijp jouw vergelijking niet helemaal.

Dit schreef jij:
Maar goed. Dit zijn "bijzonder efficiente" leds. Dat kan je vantevoren niet weten hoe goed ze zijn. Zet je een 1k weerstand als serieweerstand, gaat je led (tot zo'n 20V) niet kapot, en is het ongemakkelijk omdat ie zo fel is.... Dan zet je er tzt een grotere weerstand in. Werkt altijd. Doe je zoals ik (zeg 470k) dan kan het zijn dat je je ledje niet ziet terwijl dat wel zou moeten. Dat is vervelend foutzoeken.

Dat begrijp ik allemaal wel, maar ik zit nog steeds met de andere vragen die ik hier boven al stelden:

Dit schreef jij:
En uiteraard pin26 bezigen
Wat bedoel je hiermee, waar moet ik pen D26 op aansluiten?

Als laatste voor mij eigenlijk wel zeker:
Ik denk ook hier dat in het schema m.b.t. R6, R5 R3 en R7 de waarden 1K moeten zijn en die van R8 10K, verbonden met de Analoge pin A0, zoals hij eerder beschrijft.

Hier zie je dat Pin 26 niet is aangesloten en in het programma wel wordt gedefinieerd.

Led met serie weerstand tussen gnd & Pin26

De persoon in kwestie heeft dus bovenstaande foto op zijn website staan. Daar is te zien dat kleurcode van die weerstand in elk geval niet rood-rood-geel (220K) is, maar hetzij rood-rood-rood (2k2) hetzij rood-rood-bruin (220 ohm) (weinig resolutie, focus en slechte belichting). In een ander, getekend, plaatje op zijn site is echter te zien dat hij rood-rood-bruin gebruikt (dus 220 ohm):
https://kf4bzt.files.wordpress.com/2015/08/simplefade_bb.png?w=549

Voor een ouderwetse THT-LED is 220K veel te hoog. Misschien is 220 ohm wat aan de lage kant, maar je LED zal niet kapot gaan en het is zeker dat hij oplicht. Het komt niet zo nauw, 470 ohm is ook prima.

Het zijsprongetje: De LEDs van rew zijn heel efficient, dat wil zeggen dat ze bij een hele kleine stroom al oplichten. Maar zo te zien heeft zelfs hij met die super efficiente LEDs geen 220K gebruikt bij 5V, maar 100K.

Verder is de website-eigenaar ook met de rest van beschrijvingen en schema nogal slordig. Die pin 26 hoort natuurlijk niet aan de +5V, maar zoals Gij Kieken al zegt aan de LED/weerstand keten.

De foto's kan hij best op een ander moment hebben genomen waar net een draadje was losgekomen en hij deze per ongeluk in D24 had teruggestoken in plaats van D26.

De ratio van de weerstanden bij de schakelaars bepaalt de spanningsdeling. Afhankelijk van het programma kan het dus met verschillende waardes werken. Ook hier zou het kunnen dat hij op het foto-moment nog met andere waardes aan het experimenteren was. Maar het schema toont nu 10K met een 220 ohm pull-up en dat lijkt me geen handige verhouding.

Zijn foto's tonen 1K bij de toetsen, en een 10K pull-up. Dat lijkt me juist. Dat is ook hoe het in het andere schema op zijn site staat, dat door iemand anders getekend is.

Al met al ben je dus een website aan het bekijken, waarop iemand beschrijft hoe hij hardware van een ander heeft nagebouwd en hoe hij software van een ander gebruikt. In de loop van zijn beschrijvingen ontstaan diverse discrepanties. Ik zou zelf nooit lang op zo'n site blijven hangen en liever naar de oorsprong doorklikken.

If you want to succeed, double your failure rate.

Jochem en Gij,
bedankt dat jullie de tijd hebt genomen mij te beantwoorden.

Ik ben er nu helemaal uit.
wat betreft Jochem: de websitemaker heeft de bedoeling gehad om de pin-bezetting van K3NG, die bedoeld is voor de Arduino UNO, om te zetten naar de Arduino MEGA, 2560 zoals ik die heb.

Ik heb vele websites bezocht maar er geen gevonden die geschikt is voor mijn Arduino processor.
Dus voorlopig zal ik het er mee moeten doen en alert zijn op mogelijke volgende slordige fouten.

Bijlage correcte schema.

Cees.

Of je bestelt een UNO kloon voor €2,50 inclusief verzendkosten...

https:/ /www.aliexpress.com/item/CH340G-MEGA328P-Mini-USB-UNO-R3-Microcontrolle…

If you want to succeed, double your failure rate.

Ik neem aan dat je via de website de Arduino source code kunt downloaden. In dat geval kun je eenvoudig de code aanpassen naar de situatie die je zelf hebt. De LED sluit je aan op een digitale pin, en de analoge zaken op een analoge pin. In de code zet je dan dezelfde pinning.
Copieren is heel fijn soms, als het kan, maar veel beter is om zelf een beetje de zaken naar je hand te zetten.

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Sorry iedereen,

Ik ga messchien iets opnieuw vragen, ik ben er nog steeds niet uit.

Uit het schema, is door mij gewijzigd, blijkt dat door het indrukken van A0 de spanning van 5Volt naar niveau GND daalt. Dat is het enige dat S1 doet.

Mij vraag is wat is de relatie van A0 en Digital D26, hoe communiceren die met elkaar?

Dat snap ik niet, ook als ik het programma bestudeer.
Ik zie wel dat als een van de andere knoppen worden ingedrukt het spannings niveau op A0 afhankelijk van de weerstanden van GND naar een hoger niveau wordt getild, een analoge poort zal hier best wel mee overweg kunnen.

Dus nogmaals hoe bestuurt de A0 nou een digitale poort, in dit geval D26.
Kan iemand mij dat uitleggen, misschien dat ik dan een stukje verder kom in de situatie dat de led niet reageert.
Het voorbeeld programma BLINK werkt wel, maar hier komt A0 niet in voor.

/* Pins - you must review these and configure ! */
#ifndef keyer_pin_settings_h
#define keyer_pin_settings_h

#define paddle_left 2
#define paddle_right 5
#define tx_key_line_1 11 // (high = key down/tx on)
#define tx_key_line_2 12
#define tx_key_line_3 0
#define tx_key_line_4 0
#define tx_key_line_5 0
#define tx_key_line_6 0
#define sidetone_line 4 // connect a speaker for sidetone
#define potentiometer A0 // Speed potentiometer (0 to 5 V) Use pot from 1k to 10k
#define ptt_tx_1 0 // PTT ("push to talk") lines
#define ptt_tx_2 0 // Can be used for keying fox transmitter, T/R switch, or keying slow boatanchors
#define ptt_tx_3 0 // These are optional - set to 0 if unused
#define ptt_tx_4 0
#define ptt_tx_5 0
#define ptt_tx_6 0
#define tx_key_dit 0 // if defined, goes active for dit (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state
#define tx_key_dah 0 // if defined, goes active for dah (any transmitter) - customized with tx_key_dit_and_dah_pins_active_state and tx_key_dit_and_dah_pins_inactive_state

#ifdef FEATURE_COMMAND_BUTTONS
#define analog_buttons_pin A1
#define command_mode_active_led 0
#endif //FEATURE_COMMAND_BUTTONS

#endif //keyer_pin_settings_h

Je gebruikt dus A0 als digitale input. Ik denk dat dat kan, maar dan moet die A0 pin wel als digitaal geprogrammeerd zijn in je programma. In dat geval zal er toch ergens staan in de trend van if (A0=1) then, of zo. Zie je dat nergens? (als jij een andere pin gebruikt dan het oorspronkelijke ontwerp zal het geen A0 zijn maar iets anders uiteraard).

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Ik denk dat de A0 toch analoog wordt aangestuurd met verschillende deelspanningen afhankelijk van welke knop je indrukt. S1 geeft zelfs 0V aan de ingang.

Dacht even aan:
#define FEATURE_COMMAND_BUTTONS;

En ook D26 in dit geval als OUTPUT te zetten, maar dat heeft geen effect.
Ik zit nog maar steeds te denken wat de invloed van 0 of 5V aan A0 is op de status van D26.
Direct aan D26 kan ik de poort met HIGH wel op 5V zetten.

Een korte kernvraag die mij kan helpen een ander probleem op te lossen.

Wie kan mij helpen aan een Arduino sketch voor de Arduino MEGA, waarbij ik met behulp van een een button, aangesloten op een analoge ingang, een ledje aan en uit kan schakelen op een digitale poort.

Als ik dat zou weten, ben ik al een heel stuk verder.

Nou korter kan het niet hi.

Cees

Lambiek

Special Member

Om welke spanning gaat het, analoog gezien? En hoeveel bit is je A/D converter, 8, 10, of meer?

Als je haar maar goed zit, GROETEN LAMBIEK.

Dit doe je hetzelfde als een digitale ingang... Je kan je analoge ingangen gewoon gebruiken als digitale, zelfs met de digitalRead() functie, alleen gebruik je dan A0,A1,A2,... om digitaal uit te lezen.

Oke, maar is het veel moeite daar een sketsch voor uit te schrijven?

Lambiek

Special Member

Als je haar maar goed zit, GROETEN LAMBIEK.

Dat is trouwens mijn vraag niet helemaal.
5V of 0V analoog, ledje op een digitale poort, aan of uit.

Lambiek

Special Member

Dat is toch niet zo moeilijk, iets van:
IF S1 = 1024 THEN
LED = 1
ENDIF

IF S1 = 0 THEN
LED = 0
ENDIF

Maar dan in het arduino taaltje. :)

Als je haar maar goed zit, GROETEN LAMBIEK.

Nee Labiek, anders zou ik deze post niet plaatsen. En geloof mij, nergens kun je hier een voorbeeld van vinden.

Wordt allemaal beschreven zoals Jeffreyy bedoelt, maar ik wil het op de manier zoals ik in mijn post heb omschreven.
In de sketsch een argument voor A0 met +5V/0Volt en eentje voor D26 o.i.d. waarop ik mijn ledje aansluit.

Dit zijn toch de standaard voorbeelden die overal te vinden zijn?

c code:

const int ledPin = 11;
const int ButtonPin = A0;
int ButtonState = 0;

void setup() {
  pinMode(LedPin,OUTPUT);
  pinMode(ButtonPin,INPUT);

}

void loop() {
 
 ButtonState = digitalRead(ButtonPin);
 
 if (ButtonState == HIGH){
    digitalWrite(ledPin,HIGH);
 }
 else{
   digitalWrite(ledPin,LOW);
 }
}

Op bovenstaande manier, of je doet een analogRead en je vraagt of hij 255 is...

Dit is wat ik bedoel, bedankt.
Ik hoop hiermee te zien of mijn Arduino hardware nog goed is.

Met die kennis hoop ik er achter te komen waarom een ander programma met andere statements, en hetzelfde doel beogend, nou juist niet werkt.