hulp gevraagd bij een Arduino CW keyer projectje.


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

Led met serie weerstand tussen gnd & Pin26

Jochem

Golden Member

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.

Heb geduld: alle dingen zijn moeilijk voordat ze gemakkelijk worden.

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.

Jochem

Golden Member

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

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

Heb geduld: alle dingen zijn moeilijk voordat ze gemakkelijk worden.

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.

Als je Arduino IDE opent, doe eens de moeite om naar
<Bestanden> en dan door naar <Voorbeelden>
<02.Digital>verder naar <Button> te gaan.
Maak eens een paar van die oefeningen.

Heb ik gedaan, zelfde sketch als Jefferyy.
Staat op breadbordje en werkt goed.

Arduino MEG hardware is in ieder geval in orde.

Van daaruit nog steeds zoeken naar een werkende sketch gesteld in dit forum

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

define FEATURE_COMMAND_BUTTONS.

zie mijn eerdere post "hulp gevraagd bij een Arduino CW keyer projectje.

Best veel werk voor jullie, als het teveel uitzoekwerk is, laat het dan maar zitten.

Sine

Moderator

Dat is heel wat anders dan een analoge ingang digitaal gebruiken, in dat project wordt een stapel switches met een R-ladder aan een analoge ingang geknoopt. Op die manier kun je een verschillende schakelaars met 1 pennetje binnen halen.

Truuk is wel dat die weerstanden ietwat kritisch zijn.

@marconist, ik heb de topics even samengevoegd, anders weet straks echt geen hond meer waar het over gaat.

-edit-

Als je die ladder aan het bouwen bent in het "losse" fritzing schema, daar klopt geen hout van. In het grote schema staat het correct.

[Bericht gewijzigd door Sine op 21 september 2017 20:34:09 (17%)]

Prima Sine.
Ik kan mij er nog steeds niet bij neer leggen dat het programma van K4BZT niet werkt.
Maar ja wat niet is, is nou eenmaal niet.

Sine

Moderator

Ik ben geen arduinoloog, dus daar kan ik je niet mee helpen.