Beginnend knutselaar vraagd help...

algemene C code
Berichten: 6
Geregistreerd: 27 Apr 2013, 17:16

Beginnend knutselaar vraagd help...

Berichtdoor Spy Fox » 27 Apr 2013, 17:19

Graag wat help om dit projectje tot stand te brengen.
Heb al een paar testjes gemaakt, en elke stap apart kan ik in werking zetten
Doch weet niet hoe uit te breiden, en de stappen tezamen te zetten.
Materiaal
Arduino uno.
Led
Zoemer
Servo motor
detectiesensor ( output 3.3v indien ON)
Wat is de bedoeling.
Bij aanleggen van de spanning 9v batterij mag het systeem pas na 30 sec op scherp komen te staan
Led =ON
Een bewegingssensor controleert de omgeving , wanneer getriggerd moet een servomotor 45° draaien. En moet een zoemer aangaan voor ongeveer 30 sec.
Led gaat OFF.
Drukknop reset het systeem.
Servomotor gaat terug naar 0

Dwz.
1- Eerste stap power on is timer 30 sec. geen output
2- Na 30 sec systeem compleet in werking = Led ON (pin 13)
3- Bewegingssensor detectie = ON
4- Bewegingssensor detecteert iets ( geeft dan 3.3v output)
5- Servo – werkt 45°
6- Led gaat uit.
7- Zoemer in werking (Timer 30sec)
8- Systeem wacht op input drukknop
9- Drukknop =on = systeem terug naar stap1
10- Servo terug naar 0
11- Led terug aan.

Advertisement

Berichten: 85
Geregistreerd: 10 Jan 2013, 14:51
Woonplaats: Waddinxveen

Re: Beginnend knutselaar vraagd help...

Berichtdoor Karel » 27 Apr 2013, 18:54

Het is handig als je even de code die je al hebt erbij zet. Dan kunnen we zien wat je al kan, wat je al gedaan hebt en hoe dat met elkaar gecombineerd kan worden.

groet, Karel
If you think education is expensive, try ignorance! (Derek Bok)

Gebruikers-avatar
Berichten: 229
Geregistreerd: 20 Jan 2013, 12:01

Re: Beginnend knutselaar vraagd help...

Berichtdoor astrofrostbyte » 28 Apr 2013, 10:31

Hey Spy.Fox

Met je sequentie beschrijving heb je eigenlijk de code al geschreven. Als je de lijst nog verder kan detaileren/uitbreiden zeker doen.
Het geheel is dan vrij goed in een switch-case - state machine achtige structuur te hangen .
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate

Berichten: 6
Geregistreerd: 27 Apr 2013, 17:16

Re: Beginnend knutselaar vraagd help...

Berichtdoor Spy Fox » 29 Apr 2013, 06:49

Hallo- Eigenlijk zijn het maar de Basics, die ik heb gebruikt,
en die je ook als voorbeelden terugvind,
Als ik ze lees begrijp ik ze wel, maar heb geen idee hoe je meerdere bewerkingen zoals bovenaan combineert.


ik weet ook dat je de pin beschrijving en setup maar één keer kan aanmaken.

groetjes
Edwin

step 1
const byte ledPin = 13; // LED pin
const byte motionPin = 2; // motion detector input pin
byte senseMotion = 0; // variable to hold current state of motion detector

void setup() {
// set the digital pin directions
pinMode(ledPin, OUTPUT);
pinMode(motionPin, INPUT);
}

void loop()
{
// Now watch for burglers
senseMotion = digitalRead(motionPin);
if (senseMotion == HIGH) { // burgler found!
digitalWrite(ledPin, HIGH);
} else { // no burgler, yet...
digitalWrite(ledPin, LOW);

step 2


#include <Servo.h>

Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created

int pos = 0; // variable to store the servo position

void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}


void loop()
{
for(pos = 0; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for(pos = 180; pos>=1; pos-=1) // goes from 180 degrees to 0 degrees
{
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}

Berichten: 6
Geregistreerd: 27 Apr 2013, 17:16

Re: Beginnend knutselaar vraagd help...

Berichtdoor Spy Fox » 29 Apr 2013, 13:36

Ik probeer even een aanzet als compilatie te maken van de twee bovenstaande
- bij beweging sensor on, led + aansturing servo....
dit nog zonder de timers, led,zoemer, en resetfunctie zoals beschreven.
Misschien kunnen jullie ma al eens op mijn fouten wijzen vermits ik nog niet de denkpiste heb om hier degelijk mee te werken.


Compliatie

const byte ledPin = 13; // LED pin
const byte motionPin = 2; // motion detector input pin
byte senseMotion = 0; // variable to hold current state of motion detector
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int pos = 1; // variable to store the servo position// andere plaats geheugen (1) dan sensemotion variabele (0) ????

void setup() {
// set the digital pin directions
pinMode(ledPin, OUTPUT);
pinMode(motionPin, INPUT);
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}

void loop()
{
// Nu wacht op beweging
senseMotion = digitalRead(motionPin);
if (senseMotion == HIGH) { // Beweging aansturen led, en servo
digitalWrite(ledPin, HIGH);
if (senseMotion == HIGH) {
myservoWrite(pos);
} else { // no burgler, yet...
digitalWrite(ledPin, LOW);

//possitie servo
for(pos = 1; pos < 45; pos += 1) // goes from 0 degrees to 180 degrees
{ // in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}

Berichten: 85
Geregistreerd: 10 Jan 2013, 14:51
Woonplaats: Waddinxveen

Re: Beginnend knutselaar vraagd help...

Berichtdoor Karel » 29 Apr 2013, 17:09

Je zou iedere stap die je in je eerste post vermeld een eigen functie kunnen geven.
Je hebt verschillende soorten functies beschreven. Sommige worden in een lus achtereenvolgens uitgevoerd.

Maar de eerste stap waarin je dertig seconden niets wilt doen komt maar wordt buiten de lus alleen aangeroepen als er een alarm is geweest en het systeem opnieuw begint. Die 30 seconden wachten en het inschakelen van de LED zou je dus in de setup kunnen meenemen, en dan na het indrukken van de knop na alarm gewoon de Arduino resetten. Dan begint alles opnieuw. Of je maakt van dat stukje een aparte functie void initialiseer(), en die roep je 1 keer aan in de setup en verder na het indrukken van een knop na alarm.

Vervolgens ga je in de void loop() detecteren of er een beweging is. Als je nu een functie void actie() maakt en daar al je actie -stappen in stopt, dan roep je die functie aan als er een beweging is gedecteerd. In actie() handel je dan de servo, de zoemer en het wachten op de knop af. En na het indrukken van de knop reset je het board of begin je weer met een aanroep naar initialiseer().

Er zit nog een los eindje aan je pseudo-code (zo noem je een beschrijving van programmastappen in gewone taal ook wel).
Wat doe je bijvoorbeeld als na 30 sec. de knop niet is ingedrukt?
If you think education is expensive, try ignorance! (Derek Bok)

Berichten: 6
Geregistreerd: 27 Apr 2013, 17:16

Re: Beginnend knutselaar vraagd help...

Berichtdoor Spy Fox » 29 Apr 2013, 22:29

Bedankt al Karel

Ik zie dat er in de bovenstaande code al een aantal foutjes staan.
zal daarom eerst eens wat testjes doen met aparte dingen, met de bedoeling ze beter te begrijpen.
Ik heb echter niet veel tijd om dit rond te krijgen :(

O ja... als je u moest afvragen waarom dit projectje, zeg maar dat ik een pop op box (duiveltje uit een doosje) wil maken met bewegingssensor en resetfunctie.
Dit om wat fratsen uit te halen met de vrienden :)

Gebruikers-avatar
Berichten: 229
Geregistreerd: 20 Jan 2013, 12:01

Re: Beginnend knutselaar vraagt help...

Berichtdoor astrofrostbyte » 30 Apr 2013, 12:43

byte senseMotion = 0; // variable to hold current state of motion detector
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int pos = 1; // variable to store the servo position// andere plaats geheugen (1) dan sensemotion variabele (0) ????


Je hoeft variabelen niet zelf een plek in het geheugen te geven , dat doet de compiler netjes voor jou.
De '= 1;' is dus voor toekenning van de waarde IN de variabele.
Gear: Arduino- Uno,Due,Ethernet,Mega2560 , OLS LogicAnalyser, TDS1002, Rigol DG1022, J-Link EDU, BusPirate

Terug naar C code

Wie is er online?

Gebruikers in dit forum: Geen geregistreerde gebruikers en 4 gasten