scratch arduino (automatisch luikje)

Ik heb de nieuwe sensor binnen en ik krijg nu inderdaad als de magneten tegen elkaar aan gaan de nulletjes in beeld.

Maar ik heb de NO besteld, maar ik ben bang dat ik de NC moet hebben... Als de magneetsensors elkaar raken dan moet de magneetswitch op 1 komen te staan, maar nu komt die op 0. Dus exact andersom.

Doet een NC magneetsensor precies het tegenovergestelde als een NO?

Op 3 oktober 2018 20:30:33 schreef hans1234:
Doet een NC magneetsensor precies het tegenovergestelde als een NO?

Ja. Maar dat kun je in de software prima oplossen. Een andere sensor bestellen is dus niet nodig.

Evengoed is de NO versie de meest gangbare en logische, dus kijk eerst maar even of er verder niks mankeert.

[Bericht gewijzigd door BVZ op woensdag 3 oktober 2018 20:37:02 (17%)

Alles doet het nu alleen de magneetsensor moet precies andersom.

Heeft iemand een idee wat ik zal moeten aanpassen in de code?

Ik denk dat ik dit gewoon moet omdraaien:

code:

void OpenLuik(void) {
  /*************************/
  while (digitalRead(magneetPin) == 0) { //lees de switch uit 0=nog niet boven

Dus die ==0 aanpassen in 1

code:

// beslissen of luik open, dicht of blijven moet
  if ((gemiddelde <= LuikWelterusten) && (digitalRead(magneetPin) == 1)) { // luik moet openstaan 1=luik is bovenaan
    SluitLuik();
    Luikstatus = 1;

En bij deze die ==1 aanpassen in 0

Op 3 oktober 2018 20:39:21 schreef hans1234:
Alles doet het nu alleen de magneetsensor moet precies andersom.

Heeft iemand een idee wat ik zal moeten aanpassen in de code?

Volgens mij hoef je niks aan te passen in de code:

c code:

pinMode(magneetPin, INPUT_PULLUP);       //tussen 0 en de pin

Dat wekt de indruk dat de standaardwaarde == 1, dus als de 'magneet' ten tonele verschijnt die '0' moet worden.

EDIT: Je kunt het evengoed wel proberen natuurlijk. In het ergste geval werkt je programma nog steeds niet.

[Bericht gewijzigd door BVZ op woensdag 3 oktober 2018 20:49:17 (10%)

Oh oke. Maar als ik dit zo lees dan stopt die pas met draaien als die op 1 komt. Bij 1 is die boven:

code:

// beslissen of luik open, dicht of blijven moet
  if ((gemiddelde <= LuikWelterusten) && (digitalRead(magneetPin) == 1)) { // luik moet openstaan 1=luik is bovenaan
    SluitLuik();
    Luikstatus = 1;

Op 3 oktober 2018 20:51:48 schreef hans1234:
Oh oke. Maar als ik dit zo lees dan stopt die pas met draaien als die op 1 komt. Bij 1 is die boven:

Kan. Mits je sensor onderaan zit, anders is alles wat niet op een paar cm van onderaan zit automatisch 'boven'.

Want: NO -> normally open. Dus zolang geen magneet heel dicht in de buurt is geeft dat via de 'PULLUP' een '1' retour.

De sensor zit wel boven. Als er geen magneet in de buurt is dan geeft die inderdaad die 1 terug.

Als het dan donker wordt dan gaat de luik inderdaad een paar seconden naar beneden. Maar als het licht wordt dan doet die niks omdat die magneet nog steeds die 1 weergeeft. In de code geeft die aan dat de luik al boven is.

Als ik dan de magneet er tegen aan houd dan geeft die de 0 terug en gaat die na een tijdje weer omhoog maar blijft draaien omdat die een 1 terug moet krijgen voordat die stopt.

De 1 en de 0 moeten dus in de software aangepast worden. Dus 0 is boven en 1 is beneden. Dan zal die het moeten doen :-)..denk ik.

Ik zal gaan uitzoeken wat ik nu precies moet aanpassen in de code om dat voor elkaar te krijgen..

Ik ben een beginner mer Arduino, en lees vol intresse mee met dit draadje!
Het is erg leerzaam!
En nu vroeg ik mij af of je met deze magneet sensor/schakelaar ook rekening moet houden met ‘debounce’? (Sorry: Ik weet het Nederlandse woord hier niet van)

Shiptronic

Overleden

Op 4 oktober 2018 17:03:32 schreef SunRayes:
Ik ben een beginner mer Arduino, en lees vol intresse mee met dit draadje!
Het is erg leerzaam!
En nu vroeg ik mij af of je met deze magneet sensor/schakelaar ook rekening moet houden met ‘debounce’? (Sorry: Ik weet het Nederlandse woord hier niet van)

Ontdenderen.

[Bericht gewijzigd door Shiptronic op donderdag 4 oktober 2018 18:40:03 (94%)

Wie de vraag stelt, zal met het antwoord moeten leren leven.
Lambiek

Special Member

Dat zou ik wel doen ja, kan ook in de software door een kleine delay te geven.

Als je haar maar goed zit, GROETEN LAMBIEK.

Hallo allemaal,

Ik heb de code aangepast en het blijkt te werken :-)

Ga nu alles weer ombouwen om het te kunnen plaatsen in het kippenhok.

Heel erg bedankt voor alle hulp!!

Hallo,

Super blij met deze post, aangezien ik alles uit China had besteld en de site met de code en alles offline was gegaan...

En in principe alles werkt. Testopstelling gemaakt en het werkte.. in kippenhok geplaatst. En het werkte.. En best een beetje trots. Tot ik de stekker van de USB er uit trek en het net lijkt of ziet hij het programma dan niet. Doet niks. Wel branden alle lampjes op de printplaatjes dat er spanning is en er is voldoende spanning(ook gemeten).

Aangezien dit de eerste keer is dat ik zoiets doe is de kans groot dat ik iets fout doe, maar kunnen jullie mij vertellen wat? Ik zie het even niet..

Lambiek

Special Member

Op 2 januari 2020 11:24:03 schreef sismoarjelle:
Hallo,

Ten eerste welkom op het forum.

Beetje oude koe, maar vooruit. :)

En in principe alles werkt. Testopstelling gemaakt en het werkte.. in kippenhok geplaatst. En het werkte.. En best een beetje trots. Tot ik de stekker van de USB er uit trek en het net lijkt of ziet hij het programma dan niet. Doet niks.

Weet je zeker dat het programma in je controller geladen is?

Als je de controller uitleest via de pc en de software, krijg je dan te zien of er überhaupt data in je controller staat?

Als je haar maar goed zit, GROETEN LAMBIEK.

Op 2 januari 2020 11:24:03 schreef sismoarjelle:
Tot ik de stekker van de USB er uit trek en het net lijkt of ziet hij het programma dan niet. Doet niks. Wel branden alle lampjes op de printplaatjes dat er spanning is en er is voldoende spanning(ook gemeten).

Vermoedelijk krijgt de arduino zijn voedingsspanning van de usb poort en valt die dan weg als je die uittrekt.
Ik denk dat de jumper op die H-bridge (rode print) niet juist zit.

LDmicro user.
Lambiek

Special Member

Dat is een goeie MGP, had ik nog niet aan gedacht. :)

Maar aan de andere kant zegt hij dat hij op de printplaatjes ledjes ziet branden, dus hoe zit dat dan.

Als je haar maar goed zit, GROETEN LAMBIEK.

Het programma zit zeker in de controller want bij Arduino's is er geen mogelijkheid om eerst in RAM oid te runnen. Je laadt het in Flash en daar loopt ie altijd uit.
Wat er mogelijk gebeurt is dat de controller reset bij het uittrekken van de USB plug. Dat is normaal. Mogelijk zit er iets in je code waar ie na reset op gaat wachten, iets wat bij de 2e keer starten niet aanwezig is.

Tip: laat een van de LED's knipperen, dan weet je of je programma wel loopt.

Vraag: over welk type Arduino hebben we het hier over?

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

bedankt voor de reacties!

de arduino krijgt zijn voeding wel van gewoon van de adapter.

Op 2 januari 2020 15:07:22 schreef flipflop:

Tip: laat een van de LED's knipperen, dan weet je of je programma wel loopt.

Vraag: over welk type Arduino hebben we het hier over?

het is de arduino nano.

Op 2 januari 2020 13:19:43 schreef Lambiek:

Weet je zeker dat het programma in je controller geladen is?

Als je de controller uitleest via de pc en de software, krijg je dan te zien of er überhaupt data in je controller staat?

heb hem via de monitor van de ide lopen en dan zie ik dat ie wat doet zeg maar. Dus kan me niet voorstellen dat het loopt vanuit het programma, aangezien je het ook echt uit dat programma upload..

Moet er geen pullup weerstand aan het deurcontact?..ben niet zo thuis in arduino ivm interne pullups

[Bericht gewijzigd door MGP op maandag 6 januari 2020 08:51:43 (12%)

LDmicro user.
vergeten

Golden Member

Specificaties:
Schakeling: N/O normally opende

Dit betekend doorgaans dat de sensor zonder magneet erbij een open contact is.

Met de magneet bij de sensor zou hij best iets van 0.07Ω kunnen meten.

Het kan zijn dat ze dit bedoelen:
Dat het raam/deur gesloten is (magneet tegen sensor) en dat hij dan open is, hoewel er ook (sensor)reed relais bestaan die als wisselcontact zijn uitgevoerd.

Maar hoe dan ook met en zonder magneet tegen de sensor moet er een verschil meetbaar zijn.

(Meet de sensor als hij NIET is aangesloten anders meet je andere delen van de schakeling mee!)

Doorgaans schrijf ik duidelijk wat ik bedoel, toch wordt het wel anders begrepen.

TS, ik probeerde me ter herinneren hoe je schakeling er ook weer uitziet. Maar dat heb je blijkbaar nog niet verteld. Misschien moet je dat eerst eens schetsen.

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

Is er ook een plaatje van de arduino zelf . ik wil ook een kippenluikje maken maar ik heb nog geen idee waar ik beginnen moet

Mijn hardware is klaar, nu pas dit draadje ontdekt.
Hebook lang liggen zoeken. Ik heb de magneetswitch vervangen na veel twijfel over de benaming NO/NC ik heb nu een magneetschakelaar die de stroom doorlaat als er geen magneet is, dus weerstand 0 zonder magneet.
Hiermee werkt het in bureauomstandigheden correct.
NU nog plaatsen en wat software aanpassen voor de juiste grootte van het luik.

big_fat_mama

Zie Paulinha_B

Ik vind de titel verwarrend. Dit heeft toch niets te maken met de programmeertaal scratch? Zou het kunnen dat bedoeld werd "sketch" ipv "scratch"?

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord