Pagina1 van 1
Forum

Welkom bij de Tweaking4All gemeenschapsforums!
Voor je gaat deelnemen, bekijk de Forum Regels!

Specifieke onderwerpen: Start het onderwerp met de naam van het programma of systeem.
Bijvoorbeeld “MacOS X – Jouw vraag“, of bijvoorbeeld “MS Word – Jouw Tip of Truc“.

Merk op: Omschakelen naar een andere taal zal niet werken als je een post aan het lezen bent aangezien er waarschijnlijk geen vertaling beschikbaar is.



Arduino - automatis...
 
Deel:
Meldingen
Alles wissen

[Opgelost] Arduino - automatische schuifdeur sluiting voor buscamper

65 Berichten
2 Gebruikers
1 Reactions
7,855 Bekeken
(@anne-jan)
Eminent Member
Deelgenomen: 4 jaar geleden
Berichten: 37
Topic starter  

Hallo medeklussers,

ik ben nieuw hier, even voorstellen, ik ben Anne-Jan, 68 jaar en klus graag.

Ik ben niet of nauwelijks bekent met  de programmeertaal, maar beter bekent met instructiewerk.

Ik ben van plan om, mijn herrie makende schuifdeur, van onze buscamber VW T4, automatisch dicht te laten trekken door een roterende 12 volt dc motor.

De schakeling wil ik tot stand laten komen met behulp van een Arduino Uno r3.

nu mijn vraag;

zou iemand mij willen helpen met het schrijven van de sketch voor deze actie?

even uitleggen wat er moet plaats vinden;

Een 12 volt dc motor moet 1 omwenteling tegen de klok in gaan draaien, om de schuifdeur dicht te trekken.

Benodigde onderdelen; 

2 reedcontacten van het type (normaly open), in het plan rc1 en rc2 genoemd.

1 dc motor 12 volt 5Amp, met vertragingskast, trekkracht 35Kg/cm

Motordriver Sytron-MD13s

Arduino uno r3

Het plan;

1 Als rc1 en rc2 zijn gesloten, staat de motor stil. (schuifdeur is gesloten), dit is de uitgangspositie.

2 Als rc1 is open en rc2 is gesloten, dan staat de motor nog steeds stil, (schuifdeur is nu open).

3 Als rc1 weer gesloten wordt, (schuifdeur nu gesloten in 1e slot), gaat de motor lopen, tevens gaat hierdoor rc2 dan open, 

4 Als rc2 (na de hele omwenteling) weer wordt gesloten, stopt de motor met draaien, (schuifdeur is nu helemaal dicht getrokken).

Nu zijn we weer terug bij de uitgangspositie, dat rc1 en rc2 gesloten zijn en de motor stil staat.

voor zover de actie.

Maar nu wil ik graag ook nog een tweetal beveiligingen inbouwen.

1 Als de 12 volt spanning op de motordriver MD13s beneden de 12 volt komt, dan mag de actie niet van start gaan.

2 Als de weerstand van de actie te hoog oploopt, omdat er iets tussen de deur zit (bijv. een vinger), dan moet de draairichting veranderen, tot hij wordt gestopt doordat rc2 weer sluit.

De uitleg valt nog niet mee, maar ik hoop de het duidelijk genoeg is zo :) 

Graag zie ik jullie reactie tegemoet.

groet, A.J.


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 11 jaar geleden
Berichten: 2791
 

Hoi A.J.,

eerste wat me opvalt, en bedenk dan dat ik geen expert ben in motoren, is dat je een DC motor wilt gebruiken die 1 omwenteling moet maken.
Misschien is een Stepper motor een betere keuze? Je hebt dan een betere controle over hoe ver de as draait.
Zie ook dit artikel over het kiezen van motoren voor o.a. Arduino projecten.
Maar mijn inzicht in de motor die je wilt gebruiken ontbreekt, dus het kan zijn dat ik voor m'n beurt praat. 😋 

Na wat Google werk zie ik dat de Cytron-MD13s dit misschien aan kan 😎

Bij het maken van een sketch zou ik me eerst concentreren op het reedcontact deel.
De beveiliging implementeren we dan later als het motor deel naar wens functioneert.

  • Library

Om het probleem nog kleiner te maken, zou ik zelfs eerst beginnen met de motor functie, waarbij de motor 1 omwenteling maakt.
Even snel met Google gezocht en er blijkt een specifieke library hiervoor te bestaan (voor de MD13s), en die kun je op Github vinden.

Installatie van de library gaat als volgt:

  1. Open de Arduino IDE, selecteer Sketch -> Include Library -> Manage Libraries...
  2. Zoek daar naar Cytron Motor Drivers Library. (niet te verwarren met de Cytron 3A Motor Driver Shield en andere libraries)
  3. Klik de Install knop, en na installatie suggereert men de Arduino applicatie te herstarten.

Onder Examples in de Arduino IDE zie je dan wat voorbeelden (File -> Examples -> Cytron DC Motors Library).

Je ziet daar ook dat aan het begin van de sketch we de library moeten includen met deze regel:

#include "CytronMotorDriver.h"

 

  • Reedcontacten

Vervolgens definiëren we de pinnen voor de 2 reedcontacten - hiervoor is dit Arduino artikel handig om te zien hoe het gebruik van schakelaars werkt.
N.b. de 2 pinnen heb ik willekeurig gekozen. Je kunt de nummers veranderen indien nodig of wenselijk.

#define rc1pin 2  // gebruik pin 2 voor reedcontact 1
#define rc2pin 3  // gebruik pin 3 voor reedcontact 2

Met de functie digitalRead kunnen we een pin uitlezen, waarbij HIGH wil zeggen dat de schakelaar is gesloten en LOW wil zeggen dat de schakelaar open staat.
Als voorbeeld:

if(digitalRead(rc1pin)==HIGH) { ... }

Zie ook vergelijkingsoperators voor de Arduino.

 

  • Motor Actie

Nu is het zaak een functie te maken welke de motor start en laat draaien tot rc2 wordt gesloten, of een hele omwenteling is afgerond.
N.b. ik weet niet precies hoe je een enkele omwenteling kunt bewerkstelligen met een DC motor, maar misschien weet jij dat wel.
Ik denk even dat als rc2 gesloten wordt, dat dan de motor uitgezet wordt?

Noem die functie zoiets als "MotorActie", en in basis ziet dat er zoiets uit (ik heb de motor functie gegokt op basis van een van de library voorbeeld):

void MotorActie() {
// de stappen die nodig zijn om de motor aan te zetten en de omwenteling af te handelen
// dus: Motor AAN
  motor.setSpeed(128); // 50% snelheid - evt aanpassen aan wat wenselijk is

// Laat motor lopen to rc2 gesloten wordt
while (digitalRead(rc2pin)==LOW) {
  // niks doen tot rc2 HIGH wordt, en dus niet meer LOW is
  }

// als rc2 gesloten wordt, stop de motor
  motor.setSpeed(0);
}

Nu hebben we een functie die de motor start en laat lopen tot rc2 wordt gesloten. Handig want die kunnen we dan eenvoudig aanroepen.
Hier wat meer info over hoe een while-loop werkt.

 

  • Eerste test

Als test wil ik het simpel houden, dus als rc1 wordt gesloten, start de motor actie.
De kleine pause is om zogenaamd "bouncing" te voorkomen, maar het kan zijn dat dit niet nodig is voor een reedcontact (het is erg lang geleden dat ik een reedcontact in handen heb gehad).

// deze functie draait 1x als de Arduino aangezet wordt
void setup() {
  // nog niks hier
}

// de loop blijft herhalen tot de Arduino wordt uitgezet.
void loop() {
if(digitalRead(rc1pin)==HIGH) {
    MotorActie();
}
delay(100); // kleine pauze
}

Alles bij elkaar voor onze eerste test (hopelijk vergeet ik niks):

#include "CytronMotorDriver.h"

#define rc1pin 2  // gebruik pin 2 voor reedcontact 1
#define rc2pin 3  // gebruik pin 3 voor reedcontact 2

// deze functie draait 1x als de Arduino aangezet wordt
void setup() {
  // nog doen we nog niks
}

// de loop blijft herhalen tot de Arduino wordt uitgezet.
void loop() {
  if(digitalRead(rc1pin)==HIGH) {
      MotorActie();
  }
  delay(100); // kleine pauze
}

void MotorActie() {
  // de stappen die nodig zijn om de motor aan te zetten en de omwenteling af te handelen
  // dus: Motor AAN
  motor.setSpeed(128); // 50% snelheid - evt aanpassen aan wat wenselijk is

  // Laat motor lopen to rc2 gesloten wordt
  while (digitalRead(rc2pin)==LOW) {
    // niks doen tot rc2 HIGH wordt, en dus niet meer LOW is
  }

  // als rc2 gesloten wordt, stop de motor
  motor.setSpeed(0);
}

 

  • Volgende stappen

Dit is maar een begin, maar we weten hierna dat de motor actie correct functioneert.
In de MotorActie functie (o.a. in de while-loop) kunnen we straks de beveiligingen inbouwen.

Als je wilt, dan kun je al de beveiligingen inbouwen, omdat testen nu wat overzichtelijker is, voordat we de andere logica gaan toepassen.
Maar, dat zal nog wel met de nodige uitdagingen komen.

- Voltage te laag

Je zult een stukje electronica moeten toevoegen die een pin HIGH of LOW kan zetten, afhankelijk van het gemeten voltage.
De analoge pinnen op de Arduino gaan waarschijnlijk kapot als je daarmee 12V gaat proberen te meten (werkt maar van 0-5V).
Een voltage deler (zie o.a. dit artikel) zou hiervoor misschien gebruikt kunnen worden.

- Te veel weerstand

Hier zijn twee zaken van belang; waarnemen van de weerstand en motor richting omdraaien.
Dat laatste is eenvoudig, door een min voor de waarde te zetten in motor.setSpeed(). B.v.

motor.setSpeed(-128);

De weerstand meten wordt echter lastiger.
Of we gebruiken een sensor, of we proberen te meten of het stroomverbruik van de motor onverwachts toeneemt - ik weet niet eens 100% zeker of dat laatste een werkbare oplossing is, en ook hiervoor zullen we een stukje elektronica moeten toevoegen om dit waar te nemen.
Had je hiervoor zelf iets in gedachten?

 

Lang verhaal he? Koste me ook wat meer tijd dan gedacht, maar ik vindt het een leuke uitdaging ... 😉 


   
BeantwoordenCiteren
(@anne-jan)
Eminent Member
Deelgenomen: 4 jaar geleden
Berichten: 37
Topic starter  

Heel erg bedankt Hans. Ik ga dit zo eerst werkend proberen te maken. Daarna komt de finetuning wel.

Groet, A.J.


   
BeantwoordenCiteren
(@anne-jan)
Eminent Member
Deelgenomen: 4 jaar geleden
Berichten: 37
Topic starter  

@hans

Ik heb de sketch even laten doorlopen in Arduino.

Maar dan krijg ik de volgende regel in beeld, exit status 1

'motor' was not declared in this scope

Wat is er fout? Hier blijkt wel uit hoe een leek ik ben op dit gebied.😊

Misschien kan je ook nog even aangeven Hans' waar ik pin 2 en pin 3 op aan moet sluiten op de motordriver MD13S? Of wijst zich dat vanzelf?

A.J.

 


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 11 jaar geleden
Berichten: 2791
 

My bad 😊 

Ik zie dat ik de "motor" declaratie ben vergeten:

// Pins voor de motor: PWM = Pin 3, DIR = Pin 4
#define motorDIRpin 4
#define motorPWMpin 3

// Configure the motor driver.
CytronMD motor(PWM_DIR, motorPWMpin, motorDIRpin);

Dit moet je in de code toevoegen na deze regel:

#include "CytronMotorDriver.h"

   
BeantwoordenCiteren
(@anne-jan)
Eminent Member
Deelgenomen: 4 jaar geleden
Berichten: 37
Topic starter  

@hans 😀 

Kan gebeuren.

Nu loopt hij in ieder geval wel goed door.

Ik heb de MD13S en ook de motor nog niet binnen.

Zodra ik alles binnen heb ga ik het aansluiten en testen.

Ik hoop dat ik het bedraden zelf kan en een beetje snap hoe het moet.

Anders meld ik me nog wel een keer hier. 😳 

Groet, A.J.


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 11 jaar geleden
Berichten: 2791
 

Cool! Ik hoor het hier wel als je weer verder kunt 👍 😀 


   
BeantwoordenCiteren
(@anne-jan)
Eminent Member
Deelgenomen: 4 jaar geleden
Berichten: 37
Topic starter  

Hoi Hans,

Ik heb nu de md binnen en ben gaan proberen.

Maar loop als volkomen leek tegen de domste dingen aan

Het is mij niet helemaal duidelijk wat je bedoeld met de pin nummering?

Zo botsen de volgende pinnen met elkaar?

#define motorPWMpin 3  en  #define rc2pin 3  // gebruik pin 3 voor reedcontact 2

Is de ene pin3 Analoog A3? en de andere pin3 digitaal PWM3?
Ik heb meerdere opties geprobeerd maar krijg de motor nog niet aan het lopen.

Volgende vraag;
Nu heeft een reedcontact 2 draden, de ene gaat dus op pin 2 of pin 3, maar waar wordt dan de tweede draad op aangesloten? Ik heb die maar op GND aangesloten?
Mijn MD13S motordriver heeft 4 ingaande aansluitingen, GND, NC, PWM, DIR // Pins voor de motor: PWM = Pin 3, DIR = Pin 4

#define motorDIRpin 4
#define motorPWMpin 3

Mag ik hier lezen pins voor de motordriver: PWM = Pin 3, enz?
En gaat dan in dit bovenstaande geval Pin 3 naar de PWM ingang van de motordriver?
Foto bijgesloten, zodat je kan zien welke md ik heb.

Ik denk dat ik zo wel ongeveer aangeef wat voor een leek ik ben HAHA.

Met vriendelijke groet,
AJ


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 11 jaar geleden
Berichten: 2791
 

De Arduino heeft meerdere pinnen, en elke pin heeft zo z'n toepassingen.
Zo zijn er analoge pinnen, en digitale pinnen. Daarnaast zijn er een aantal pinnen die daarnaast nog een speciale functie kunnen vervullen (mbt communicatie met wat slimmere apparaten die op de Arduino kunnen worden aangesloten).

Ter referentie zie ook: Introduction to the Arduino Board
De pinnen zijn, zeker in het begin, best weleens verwarrend (ik moet soms ook referentiemateriaal zoeken om een juiste pin te kiezen).

Ik vond deze afbeelding, die het misschien wat verduidelijkt:

Je ziet links (geel) de 6 analoog pinnen, en rechts (groen) de digitale pinnen.
De PWM indicatie bij de digitale pinnen geven aan dat we hier wat extra functionaliteit kunnen vinden. Over PWM zou ik me initieel niet te druk maken, maar indien mogelijk hou deze pinnen vrij voor toepassingen op een later moment.

In jouw voorbeeld wordt Pin 3 gebruikt voor de motor waar we de PWM indicatie zien.
Dus de motor zou ik op pin 3 laten omdat deze de PWM functie waarschijnlijk gebruikt.

Het reedcontact zit in jouw voorbeeld ook op pin 3 en daar moeten we dus een andere pin voor zoeken.
Omdat het een schakelaar betreft, hebben we PWM niet nodig omdat het alleen maar de aan en uit standen kent.
Die zou ik omzetten naar Pin 7 (omdat in jouw vervolg tekst Pin 4 gebruikt wordt voor de motor richting, dus die slaan we voor het reedcontact even over).

Hiermee is dan ook meteen jouw 2de vraag beantwoord, want pin 4 wordt voor de motor gebruikt.

Ter verduidelijking;

Pin 3 PWM -> Motor (puls nodig om de motor te laten draaien)
Pin 4  -> Motor richting (aan/uit)
Pin 7 -> reedcontact (aan/uit)

Dus in code:

#define motorPWMpin 3
#define motorDIRpin 4
#define rc2pin 7

Wat schakelaars betreft, zoals jouw reedcontact, heb je (als ik me niet vergis) twee opties voor de 2de pin: GND (LOW) of +5V (HIGH). Het e.e.a. hangt van de rest van de code af.

Als voorbeeld hier de standaard Arduino opzet voor het gebruik van een schakelaar. Zoals je ziet, schakelt deze tussen een pin (2) en +5V. De weerstand en GND worden enkel toegepast om een zogenaamde "bounce" tegen te gaan (waarbij het indrukken van een schakelaar soms 2x het schakelen kan triggeren wat dus ongewenst kan zijn).

Ik weet niet waar je het reedcontact voorbeeld hebt gevonden en hoe de schakeling er uit ziet.

Ik denk echter dat jouw voorbeeld ook +5V gebruikt. Dan is het lezen van de pin standaard LOW, maar als er contact gemaakt wordt, dan gaat deze naar HIGH (+5V).


   
BeantwoordenCiteren
(@anne-jan)
Eminent Member
Deelgenomen: 4 jaar geleden
Berichten: 37
Topic starter  

@hans

Het wordt steeds verwarender, althans voor mij dan.

Zou je voor mij de bedrading willen opsommen a.d.h.v. jouw sketch?

Dus rc1 één aan pin? En  één draad aan (bijvoorbeeld) +5volt?

Zo ook voor rc2

En voor mijn motordriver aansturing

Dus welke pin van arduino komt aan 

GND

NC

PWM

DIR

Van de MD13S om de motor te activeren.

Ik zou je daarvoor erg dankbaar zijn, zodat ik iets zie draaien

Groetjes A. J.

Dit bericht is gewijzigd 4 jaar geleden door ajrumph

   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 11 jaar geleden
Berichten: 2791
 

Ik heb zelf de benodigde spullen hier niet liggen, en ik heb ook geen kant-en-klaar sketch liggen, dus ik moet alles in m'n hoofd doen. 😊 

RC1: 1 kant aan PIN 7, andere kant pin aan +5V.
RC2: 1 kant aan PIN 8, andere kant pin aan +5V. (mag ook een ander pin zijn, maar deze leek me voor de handliggend)

* ik heb RC1 nu dus aan pin 7 gehangen, en RC2 aan pin 8

* Het kan nodig zijn dat je wat de extra weerstand moet gaan gebruiken voor debounce - maar initieel kun je gerust testen zonder deze extra complicatie. Je merkt het vanzelf als de reedschakelaar "bounced", je ziet dan onverwachte effecten. Mocht dat nodig zijn dat moet je twee weerstanden hebben van 1 KOhm (zie ook deze weerstanden calculator voor de kleuren: bruin, zwart, rood). Een van de weerstanden tussen pin 7 en GND, en de tweede tussen pin 8 en GND.

Motor:

MD13S GND aan GND van de Arduino
MD13S PWM aan Pin 3 van de Arduino
MD13S DIR aan Pin 4 van de Arduino
* MD13S NC: NC staat for Not Connected en wordt dus niet gebruikt

In jouw code heb je waarschijnlijke een aantal "#define" regels, bijvoorbeeld "#define motorPWNpin 3".
Dit vertelt de compiler dat voor het werkelijk de code gaat compilen, dat elk voorkomen van het woord "motorPWMpin" vervangen moet worden door "3". Dit is voor de gebruiker niet zichtbaar, en een techniek om constanten te definiëren zonder er geheugen voor te moeten alloceren.

#define motorPWMpin 3
#define motorDIRpin 4
#define rc1pin 7
#define rc2pin 8

 

N.B.: Ik zou eerst een proefopstelling doen waarbij je de reedcontacten en de motor afzonderlijk test. Als beiden werken (ieder met een eigen sketch), dan zou ik daarna pas de beide sketchen gaan combineren.


   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 11 jaar geleden
Berichten: 2791
 

Ik heb jouw email net bekeken - prima om de video even per email te versturen, maar je kunt ze ook in het forum plaatsen als je dat zou willen.

Waarom de motor niet stopt kan ik zo 1-2-3 niet bepalen. Daarvoor zal ik de code moeten bekijken - kun je de sketch uploaden (als aanhangsel in het forum)?
Dan kan ik even kijken wat er fout gaat. Ik vermoed dat jij de motor laat lopen in een loop (in code), maar in die loop wordt het reedcontact waarschijnlijk niet uitgelezen.

 

Email AJ:

Om het wat inzichtelijker te maken heb ik van de actie een video gemaakt. Omdat ik niet weet of er een video in het forum geupload kan worden, doe ik het even per mail.
Io geef er ook commentaar bij.
Maar hij doet ten eerste niks als de Arduino voor de eerste keer aangaat, mooi xou zijn dat hij dan naar zijn eind/beginstand loopt.
Vervolgens gaat de motor wel open als rc1 gesloten is, dat is goed. Maar de motor stopt vervolgens niet als rc2 gesloten is? Wat wel zou moeten. Dan als rc1 weer open gaat mag er niks gebeuren. Maar vervolgens gaat rc1 weer sluiten, terwijl rc2 ook nog gesloten is dan moet de motor weer gaan lopen. Daardoor gaat rc2 open en de motor moet dan blijven lopen tot rc2 zich weer sluit. En dan begint de cyclus weer van voor af aan.

Snap je het nog? Denk het niet hé, daarom even de video erbij, die maakt veel duidelijk denk ik.

Maar we zijn een eind op de goede weg.
Oja waarom hij eerst niks deed, nou omdat ik van die goedkope Chinese reedcontactjes gebruikte. Nou hangen er 2 van zeer goede kwaliteit aan.


   
BeantwoordenCiteren
(@anne-jan)
Eminent Member
Deelgenomen: 4 jaar geleden
Berichten: 37
Topic starter  

Bij deze de sketch Hans, met in het rood mijn bevindingen.

#include "CytronMotorDriver.h"
 // Pins voor de motor: PWM = Pin 3, DIR = Pin 4
#define motorDIRpin 4
#define motorPWMpin 3

// Configure the motor driver.
CytronMD motor(PWM_DIR, motorPWMpin, motorDIRpin);

#define rc1pin 2 // gebruik pin 2 voor reedcontact 1
#define rc2pin 7 // gebruik pin 7 voor reedcontact 2

// deze functie draait 1x als de Arduino aangezet wordt
// Dit doet hij dus niet!

void setup() {
  // nog doen we nog niks
}

// de loop blijft herhalen tot de Arduino wordt uitgezet.
void loop() {
  if (digitalRead(rc1pin) == HIGH) {
    MotorActie();
  }
  delay(100); // kleine pauze
}

void MotorActie() {
  // de stappen die nodig zijn om de motor aan te zetten
  // en de omwenteling af te handelen
  // dus: Motor AAN
  motor.setSpeed(128); // 50% snelheid - evt aanpassen aan wat wenselijk is

  // Laat motor lopen to rc2 gesloten wordt Dit doet hij dus ook niet?
  while (digitalRead(rc2pin) == LOW) {
    // niks doen tot rc2 HIGH wordt, en dus niet meer LOW is
  }

  // als rc2 gesloten wordt, stop de motor  Dit zou hij dus inderdaad moeten?
  motor.setSpeed(0);
}

   
BeantwoordenCiteren
 Hans
(@hans)
Famed Member Admin
Deelgenomen: 11 jaar geleden
Berichten: 2791
 

Mijn vermoeden was dus niet correct. In de MotorActie wordt dus wel gekeken naar RC2.

Mogelijke oorzaak;

Het is gebruikelijk om de gebruikte digitale pinnen in te stellen in setup(), zodat de Arduino weet dat het een INPUT is. Zie ook deze beschrijving.

Dus in setup moet dit worden:

void setup() {
pinMode(rc1pin, INPUT);
pinMode(rc2pin, INPUT);
}

Probeer dat eens en kijk of het probleem hiermee opgelost is 😊 


   
BeantwoordenCiteren
(@anne-jan)
Eminent Member
Deelgenomen: 4 jaar geleden
Berichten: 37
Topic starter  

Nadat ik de aanpassing erin geplakt heb krijg ik onderstaande error.

Of de opdracht is incompleet, of toch niet juist??

Of ik heb hem op de verkeerde plek geplakt??

Maar de motor stopt nog steeds niet bij het sluiten van rc2?

Er is dus niets veranderd.🤦‍♂️

#include "CytronMotorDriver.h"
 // Pins voor de motor: PWM = Pin 3, DIR = Pin 4
#define motorDIRpin 4
#define motorPWMpin 3

// Configure the motor driver.
CytronMD motor(PWM_DIR, motorPWMpin, motorDIRpin);

#define rc1pin 2 // gebruik pin 2 voor reedcontact 1
#define rc2pin 7 // gebruik pin 7 voor reedcontact 2

// deze functie draait 1x als de Arduino aangezet wordt
void setup() {
  // nog doen we nog niks
}
void setup() {
  pinMode(rc1pin, INPUT);
  pinMode(rc2pin, INPUT);
}
// de loop blijft herhalen tot de Arduino wordt uitgezet.
void loop() {
  if (digitalRead(rc1pin) == HIGH) {
    MotorActie();
  }

  delay(300); // kleine pauze
}

void MotorActie() {
  // de stappen die nodig zijn om de motor aan te zetten en de omwenteling af te handelen
  // dus: Motor AAN
  motor.setSpeed(255); // 100% snelheid - evt aanpassen aan wat wenselijk is

  // Laat motor lopen to rc2 gesloten wordt
  while (digitalRead(rc2pin) == LOW) {
    // niks doen tot rc2 HIGH wordt, en dus niet meer LOW is
  }

  // als rc2 gesloten wordt, stop de motor
  motor.setSpeed(0);
}

Hieronder de bevindingen na het verifiëren van de sketch. MIJ ZEGT HET NIETS.

C:\Users\Rumph\Documents\Arduino\VW T4 Schuifdeur Sketch\sketch_oct30c\sketch_oct30c.ino: In function 'void setup()':
sketch_oct30c:16:6: error: redefinition of 'void setup()'
void setup() {
^~~~~
C:\Users\Rumph\Documents\Arduino\VW T4 Schuifdeur Sketch\sketch_oct30c\sketch_oct30c.ino:13:6: note: 'void setup()' previously defined here
void setup() {
^~~~~
exit status 1
redefinition of 'void setup()'

   
BeantwoordenCiteren
Pagina 1 / 5
Deel: