Opnemen van een "signaal"

goedendag,

Mijn vraag is of iemand mij kan helpen aan het volgende. Volgens mij is het niet zo'n lastige code. Maar tot zover kan ik enkel alleen nog een code lezen en nog niet schrijven.
Ik wil mezelf hierin nog gaan verdiepen.

Ik wil met 1 knop een record opnemen.
Met een andere knop mijn "signaal" invoeren.
met de 3e knop mijn signaal afspelen totdat ik de 3e knop weer indruk.

Dit om bijvoorbeeld een morsecode in te voeren en steeds te herhalen.
Wie kan mij hiermee helpen?

wat is signaal, geluid, of een drukknop, of een analoog signaal van een sensor.
morse is vrij simpel et een buzzer te doen.
zoek op arduino morse

Knop, drukknop dus.
Wat ik wil lijkt op een picooboo. Alleen dan moet hij mijn input blijven loopen.

Ik wil een pnuematische cilinder 3x per minuut een uur lang laten bedienen.
Die 3 keer zijn elke keer weer variabel qua inschakeltijd en pauze onderling.
Dus vandaar dat is de eerste minuut wil opnemen met een drukschakelaar en dit een uur lang wil laten loopen

Ondertussen al heel ver met mijn project. ik denk dat het gaat lukken.
Ik heb de code van iemand anders aangepast.
Later meer hierover

Dit is mijn script geworden: Script

Ik heb alleen dat het nu sneller word afgespeeld. Laten we zeggen dat hij van 60sec, 45sec maakt.
Iemand een oplossing?

Hoi.

Je gebruikt de online IDE, ik niet.
Daarom heb ik geen idee wat er allemaal aan voor of nadelen aan dat ding zitten.
Wel zie ik in regel 142 een aantal Koreaanse karakters staan (die vertalen naar "Opnamemodus").

Verder zie ik bij iedere 1 of 0 die je uitstuurt, een delay staan van 8 milliseconden.
Je gaf aan dat je afspeelsnelheid nu ongeveer 3/4e is van de opname.

8 / 3 = 2,67 ; 2,67 * 4 = 10,67

Wanneer je dus die delay naar 10 of 11 milliseconden vergroot, is dan je probleem niet opgelost ?

Overigens ziet dit er niet heel erg als een morsecode uit, maar zou je dat er wel van kunnen maken.
Dan is het bericht wel vrij kort, maar dat kan gewenst zijn.
Ik moet ook zeggen dat naar mijn idee de wijze van tellen middels if..then..else en dan overal delays op z'n minst opmerkelijk is.

Ik heb hem verander naar 10, en nu is een minuut ook echt een minuut.
het is tevens niet voor het creƫen van een morsecode. Maar dat vond ik even een goede vergelijking.

Het enige wat ik nu nog wil toevoegen is de loop onderbreken door een IR Remote.

Deze code gaat namelijk uiteindelijk 3x per minuut een uur lang gas geven in een auto dmv een pneumatische cilinder, voor het reinigen van de motor met een toevoeging. Zou fijn zijn al zou het fout gaan dat ik op een noodknop op afstand kan drukken. En de loop onmiddelijk stopt.

Nou, dan komt meteen naar voren waarom ik de afspeelmethode opmerkelijk noemde.
Want zoals die nu is, lukt je noodstop niet.
Wanneer je delay gebruikt, zet je je Arduino op een soort van pauze.
Ik zeg dan altijd dat je 'm helemaal niets meer laat doen dan ademen en een hartslag hebben.
Nu zijn je delays vrij kort, maar 10 milliseconden is wel de tijd waarin je Arduino 160.000 handelingen kan verrichten.

Daar komt bij dat je wanneer je aan het "afspelen" bent, je ook niet zomaar even wat anders kunt doen tijdens dat afspelen.

Er is een elegantere manier om een vertraging (==delay) te krijgen, en wel zo dat je in de tussentijd ook nog andere dingen kunt doen.
Omdat dat een veelvoorkomend probleem is, heb ik daar een stukje over geschreven (klik !).
Het vergt wat lezen, oefenen en aanwennen, maar als je dit onder de knie krijgt heb je er in de toekomst heel veel baat bij.

Een noodstop best direct in hardware uitvoeren dus bijvoorbeeld een stop relais uitschakelen, officieel mag het niet in software (nou is dat hier eigenlijk niet belangrijk.