Hallo, ik ben nieuw in het Arduino dus nog zoekende, ook op het forum.
Ik wil een camera slider maken aangedreven met een DC motor met slow start en stop en 2 reed contacten aan beide eindes van de slider.
Ik gebruik voor de dc motor besturing een motorcontrol shield an heb de slow start en stop al voor elkaar maar krijg de reed contacten niet werkend. graag hulp.
// Adafruit Motor shield library
// copyright Adafruit Industries LLC, 2009
// this code is public domain, enjoy!
#include <AFMotor.h>
AF_DCMotor motor(2 , MOTOR12_64KHZ);
const int button1 = A1; // the number of the pushbutton pin
const int button2 = A2;
void setup() {
pinMode(A0, INPUT);
pinMode(A1, INPUT);
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println("Motor test!");
pinMode(button1, INPUT);
pinMode(button2, INPUT);
// turn on motor
motor.setSpeed(255);
motor.run(RELEASE);
}
void loop() {
uint8_t i;
Serial.print("tick");
motor.run(FORWARD);
for (i=0; i<255; i++) {
motor.setSpeed(i);
delay(15);
}
delay(5000);
for (i=255; i!=0; i--) {
motor.setSpeed(i);
delay(15);
}
Serial.print("tock");
motor.run(BACKWARD);
for (i=0; i<255; i++) {
motor.setSpeed(i);
delay(15);
}
delay(5000);
for (i=255; i!=0; i--) {
motor.setSpeed(i);
delay(15);
}
Serial.print("tech");
motor.run(RELEASE);
delay(1000);
}
Als eerste wil ik je graag wijzen op deze thread (klik!).
Het bevat de gebruiksaanwijzing van het board, een introductie in het Nederlands en een verwijzing naar het Engelstalige deel van de wat uitgebreidere handleiding.
Lees ze beiden door en probeer ze te gebruiken, dan houd je iedereen te vriend.
Als je dat gedaan hebt, weet je ook hoe je code plaatst zodat het beter leesbaar is en zonder risico op ongewenste resultaten.
Die code die je geplaatst hebt, komt me wel erg bekend voor.
Het is namelijk niet meer dan een voorbeeld van de Adafruit site.
Als je nieuw bent met programmeren, lijkt het me wat sterk dat je dit allemaal al begrijpt.
Daarom de volgende vragen en tips:
Heb je meer aangeschaft dan waar je nu mee bezig bent, wellicht een starterkitje ?
Zo nee, dan raad ik je aan een breadboardje, wat losse drukknopjes, een aantal weerstanden (220, 1000 en 10.000 Ohm) een paar LEDjes en een potentiometer van 10K aan te schaffen.
Dat kost je maar een paar euro.
Met deze onderdelen kun je een aantal van de voorbeelden maken die je bij je IDE (de programmeersoftware voor de Arduino) hebt gekregen.
Die vind je in het menu onder bestand - voorbeelden.
Als je er daar een aantal van maakt, leer je heel snel heel veel.
En als je ze aanpast zodat ze net ff iets anders doen, om jezelf te bewijzen dat je begrijpt wat er gebeurt, leer je nog veel meer.
En das nog hartstikke leuk ook.
Je leert dan dus bijvoorbeeld ook hoe je schakelaars gebruikt.
Het mooie daarvan is dat technisch gezien, die reed switches niet anders zijn als een drukknop.
Daarom leer je bij die voorbeelden ook hoe je je vraagstuk oplost.
Dit kost je maar een paar avonden, ik had in een weekendje al heel veel geleerd en met veel plezier.
Moet ik er wel bij vertellen dat ik zo'n 30 jaar geleden al eens geëxperimenteerd had met programmeren op mijn commodore 64, maar niets dat in de buurt komt van wat er hier gebeurt.
Opgelost camera slider met twee reedcontacten aan het einde.
Slider gaat automatisch heen en weer met slow stop en slow start.
#include <AFMotor.h>
AF_DCMotor motor(2);
// constants won't change. They're used here to
// set pin numbers:
const int buttonPin[] = {A0,A1}; // de knoppen
// variables will change:
int buttonState = 0; // variable voor de knoppen
void setup() {
// initialize the pushbutton pin as an input:
for(int x=0; x<2; x++)
{
pinMode(buttonPin[x], INPUT);
}
{
motor.setSpeed(255);
motor.run(FORWARD);
}
}
void loop(){
uint8_t i;
// read the state of the pushbutton value:
for(int x=0; x<2; x++)
{
buttonState = digitalRead(buttonPin[x]);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH && buttonPin[x] == A0)
{for (i=255; i!=0; i--) {motor.setSpeed(i); delay(15);}
{
// motor achteruit:
motor.run(BACKWARD); for (i=0; i<255; i++) {motor.setSpeed(i); delay(15); }}}
if (buttonState == HIGH && buttonPin[x] == A1 )
{for (i=255; i!=0; i--) {motor.setSpeed(i); delay(15);}
{
// motor vooruit:
motor.run(FORWARD); for (i=0; i<255; i++) {motor.setSpeed(i); delay(15); }
}}
}
}