Go Down

Topic: hulp gevraagd toppers van het dutch form  (Read 819 times) previous topic - next topic

DanDuino

hallo allemaal

ik zit met een probleem
ik kreeg een opdracht om een bewegende ouija bord te bouwen

ik ben gaan kijken wat de mogelijk heden waren en al snel kwam ik op een plotter uit
van makeblock
vervolgens na dat alles goed was gemonteerd en de software werkte
kreeg ik al snel een probleem software matig
ik wil dat er op een A3 papier formaat (ouijabord 4 punten worden aangewezen
en weer stopt om vervolgens weer te starten als het weer de commando kreeg

dit alles leek zo makkelijk maar jammer genoeg is dit bij mij niet het geval
de software heeft 2 win pc laten vast lopen en om mn mac pro moet je  zo veel aanpassen
in het systeem dat ik dat echt onzin vind en zou niet eens weten hoe dat moet

als er een systeem word gemaakt zou je er toch van uit moeten kunnen gaan dat dan ook de software die er bij zit werkt.

dus ik dacht ,weet je wat. op youtube zag ik een film van Sparkfun hoe bouw je een

ouijabord
 
ik heb vervolgens de benodigde onderdelen gehaald

2 big easy drivers gehaald en een aparte 12v dc voeding
een arduino uno en mega
breadboard
en bekabbeling.


En ben mn makeblock XY plotter gaan aan passen zie hier mijn aansluit schema


dus ik gebruik de plotter mechanische gedeelte en de 42BYG stepper motor
en de 4 micro switches nog maar van makeblock.

vervolgen ingelezen op het form van arduino en mn bibliotheek aan gevuld
met de nodige software

ik test of mn x en y ass stepper motoren werken
en ga door naar de sketch die bij het project zit
knippen en plakken en gaan dacht ik

opslaan en upload
er komen geen error onder aan (goed teken )

ik zet de baud rate van de monitor op 115200
zie niets in beeld komen.

vervolgens zet ik de stroom op de aparte dc voeding die op mn drivers zitten

Wat gebeurt er dan,
Alleen mn x beweegt en y doet niets
de eindstoppen werken ook niet

nu is dit mij al een raadsel maar ook pin 11 en 12 wat moet hier mee
Moet ik die op ground zetten om hem de commando te geven
op de arduino (naast digital)

geprobeerd maar er gebeurt niets.

nu word mij verteld dat ik een gedeelte moet verwijderen
als ik daar aan begin dan komen er allemaal errors

omdat ik niet thuis ben in dit verhaal

wie ow wie kan mij helpen met dit project

code volgt

is behoorlijk lang

DanDuino

/***********************************************************
Arduija: Arduino Controlled Ouija Board
Joel Bartlett
Casey Kuhns
SparkFun Electronics
Oct. 22, 2014
https://github.com/JoelEB/Arduija2_1_1
This sketch uses the AccelStepper Library to controll two stpper motors,
driven by two Big Easy Driver boards from SparkFun. Letters on a Ouija
board are mapped out, given coordinates, and then massages are spelled
out by looking up the coordinates in that table.
Development environment specifics:
Arduino IDE .0+
Arduino Uno
This code is beerware; if you see me at the local pub,
and you've found our code helpful, please buy us a round!
Distributed as-is; no warranty is given.
***********************************************************/
#include <avr/pgmspace.h>
#include <AccelStepper.h>//include the Accel Stepper Library
#define MAX_ARRAY_LENGTH 32

// Define two steppers and the pins they will use
AccelStepper stepperX(1, 4, 5);//X axis
AccelStepper stepperY(1, 6, 7);//Y axis
//(driver=true, step, dir)

int enableX = 10;//pins to controll the enable pins on each of the Big Easy Drivers
int enableY = 11;//I tried using the intenral setEnablePin() function in the AccelStepper library
//but couldn't get it to work, even when I inverted them with setPinsInverted().

int posX = 0;//Varibales to keep track of the planchet's current position
int posY = 0;

int switch_x_left = 8;//Limit switch variables
int switct_y_top = 9;
int switch_x_right = 3;//trying to set these up as interrupts (W.I.P.)
int switch_y_bottom = 2;

int bigButton = 12;//Added big dome pushbutotn to have it display a message when pressed.
//Original plan was to have it run constantly, but the smaller stepper motor (ROB-09238)
//gets hot when ran for even a shoirt while. I'm pushing it past it's max ratings. I would
//recommend using a 68oz.-in. motor (ROB-10846) on both axes. Make sure you disable all motors
//when not in use to minimize heat dissipation and power consumption.

long randomNumber;//Random number for displaying random message when butotn is pressed.

//table to store coordinates for all the letters, #s, etc on the board.
//Due to the nature of the magnets and drag, getting exact coordinates took
//lots of trial an error, and is still not perfect when you have the planchet
//move in from different sides of the letter.
unsigned int coordinatesTable[39][3] = {
  1000,2600,'a',
  2800,1900,'b',
  4400,1700,'c',
  6100,1500,'d',
  8200,1300,'e',
  9300,1100,'f',
  11800,1200,'g',
  13700,1200,'h',
  15500,1100,'i',
  16800,1500,'j',
  18700,1700,'k',
  20300,2100,'l',
  22800,2500,'m',
  1200,4500,'n',
  2500,3900,'o',
  4300,3400,'p',
  6000,3200,'q',
  7900,2800,'r',
  9700,2600,'s',
  11500,2600,'t',
  13600,2700,'u',
  15400,2700,'v',
  17200,2800,'w',
  19400,3400,'x',
  20800,4000,'y',
  22800,4500,'z',
  0,0,'0',
  0,0,'1',
  0,0,'2',
  0,0,'3',
  0,0,'4',
  0,0,'5',
  0,0,'6',
  0,0,'8',
  0,0,'9',
  4400,10,'+',//YES
  19900,10,'-',//NO
  0,0,'!',//GOODBYE
  11700,100,'.'//SPACE
};
//------------------------------------------------------------------------------
void setup(){
 
  Serial.begin(115200);//set serial to the 115200 band
  Serial.println();


  pinMode(bigButton, INPUT_PULLUP);//Pullup button so external resistor is not needed
  randomSeed(analogRead(0));//Read analog(0) for random number generation
 
  pinMode(enableX, OUTPUT);//
  pinMode(enableY, OUTPUT);
 
  digitalWrite(enableX, HIGH);//Diable the motors
  digitalWrite(enableY, HIGH);
 
  //Had to play with these vallues to find a speed and acceleration that looked good
  //but also still ran smoothly. Tweeking these values and physically changing the
  //potentiometers on the Big Easy Driver will affect the speed of each axis.
  //BEWARE, changing these settings will change coordinates and mess up any characters
  //you have mapped out already.
  stepperX.setMaxSpeed(6000);
  stepperX.setAcceleration(5000);
  stepperY.setMaxSpeed(4000);
  stepperY.setAcceleration(4000);
 
  //This is the internal AccelStepper enable calls referred to
  //earlier. Must be called within setup() (W.I.P.)
  //stepperX.setEnablePin(10);
  //stepperY.setEnablePin(11);
  //stepperX.setPinsInverted(0,0,1);//invert the enable pin
  //stepperY.setPinsInverted(0,0,1);
 
  pinMode(switch_x_left, INPUT_PULLUP);
  pinMode(switct_y_top, INPUT_PULLUP);
  pinMode(switch_x_right, INPUT_PULLUP);
  pinMode(switch_y_bottom, INPUT_PULLUP);
  //Switch interrupts to ensure the planchet never goes out of bounds (W.I.P.)
  //attachInterrupt(0, homeing2, FALLING); //switct_y_bottom
  //attachInterrupt(1, homeing2, FALLING);//switch_x_right
 
  homeing();//set the cursor back to its home position at 0,0 first and on every reset

}
//------------------------------------------------------------------------------
void loop()
{
  if(digitalRead(bigButton) == LOW)//Wait until the big dome pusbutton is pressed to start spelling a message
  {
    ouijaMessage();//Select a random message from the list and print it
  }

  //Uncomment this line and comment out everything else in loop() to jog the planchet with keyboard inputs
  //moveWithKeyboard();
}
//------------------------------------------------------------------------------
void enableMotors()
{
  //Enable the motors
  digitalWrite(enableX, LOW);
  digitalWrite(enableY, LOW);
}
//------------------------------------------------------------------------------
void disableMotors()
{
  //Disable the motors
  digitalWrite(enableX, HIGH);
  digitalWrite(enableY, HIGH);
}
//------------------------------------------------------------------------------
void homeing()
{
  enableMotors();
  //Decided to move Y axis first since one of the magnets was hitting if it was all the way away from home.
  if(digitalRead(switct_y_top) == HIGH)
  {
    while(digitalRead(switct_y_top) == HIGH)
    {
      stepperY.moveTo(posY);
      stepperY.run();
      posY = posY - 1;
      //Serial.println(posY);
    }
    if(digitalRead(switct_y_top) == LOW)
      stepperY.stop();
      posY = 0;
      stepperY.setCurrentPosition(0);
    }
  else
  {
  posY = 0;
  stepperY.setCurrentPosition(0);
  }
 
  if(digitalRead(switch_x_left) == HIGH)//check to make sure this axis isn;t already in the home posotion
  {
    while(digitalRead(switch_x_left) == HIGH)//if it is not at home (HIGH) ...
    {
      stepperX.moveTo(posX);//start moving the X axis back to the home position
      stepperX.run();
      posX = posX - 1;//decrement the position until we reach 0 (where the switch is triggered)
    }
    if(digitalRead(switch_x_left) == LOW)//Once the switch is hit and the signal goes LOW...
      stepperX.stop();//stop the motor
      posX = 0;//set this axis position to 0
      stepperX.setCurrentPosition(0);
  }
  else
  {
  posX = 0;
  stepperX.setCurrentPosition(0);
  }
  disableMotors();
}
//------------------------------------------------------------------------------

DanDuino

(deel2 van de Code)
void ouijaDelay(void){
 //Delay to make it spoooooooky
 //Standard Delay until we can make it more spooky
  delay(200);
}
//------------------------------------------------------------------------------
//Look through the table until a character matching the current one is found
int findSymbolInTable(char symbol){
 int tableIndex;
 
 for(tableIndex = 0; tableIndex <= 39; tableIndex++){
   //Serial.println(char((coordinatesTable[tableIndex][2])));
   if(symbol == char(coordinatesTable[tableIndex][2])){
     //Serial.print("Char FOUND = ");
     //Serial.println(tableIndex);
     return tableIndex; //Return the table location
   }
 }
    return -1; //if we got to the point
               // we didn't find our value in the table
}

//------------------------------------------------------------------------------
//Used to move the planchet to the next location on the baord.
void moveToSymbol(char character)
{
 int tableIndex = findSymbolInTable(character);

 //Serial.print("x = ");
 //Serial.println(coordinatesTable[tableIndex][0]);

 //Serial.print("y = ");
 //Serial.println(coordinatesTable[tableIndex][1]);
 
 //MoveMotors
 stepperX.moveTo(coordinatesTable[tableIndex][0]);
 stepperY.moveTo(coordinatesTable[tableIndex][1]);
 
 while((stepperX.distanceToGo() != 0)||(stepperX.distanceToGo() != 0)){
   //Serial.println(stepperX.distanceToGo());
   stepperY.run();
   stepperX.run();
   //if(digitalRead(switch_x_right) == LOW || digitalRead(switch_y_bottom) == LOW)
     //homeing();
 }

 return;
}


//------------------------------------------------------------------------------
void ouijaPrint(char* charArray){
 int i;
 for(i = 0; i <= MAX_ARRAY_LENGTH; i++){
   //Serial.print(charArray); //Debug the array as we move
   if(charArray != 0){
     ouijaDelay();
     moveToSymbol(charArray);
     ouijaDelay();  
     //if(digitalRead(switch_x_right) == LOW || digitalRead(switch_y_bottom) == LOW)
     //homeing();
   } //Only move if there if valid data, if not let the loop run out.
   else break;
 }
 return;
}
//------------------------------------------------------------------------------
//Stores different messages to be speled out by the Ouija
void ouijaMessage()
{
   enableMotors();
   randomNumber = random(5);//Generate a random number between 1-5
   switch (randomNumber) //switch messages based on that random number
   {
     case 0:
       {char arrayThing[30] = {'h','e','l','.','l','o',0};
       ouijaPrint(arrayThing);
       homeing();}//Go back to home after each massage is printed
       break;
     case 1:
       {
       char arrayThing2[30] = {'s','p','a','r','k','f','u','n',0};
       ouijaPrint(arrayThing2);
       homeing();}
       break;
     case 2:
       {
       char arrayThing3[30] = {'h','a','p','.','p','y','.','h','a','l','.','l','o','w','e','.','e','n',0};;
       ouijaPrint(arrayThing3);
     homeing();}
       break;
     case 3:
       {
       char arrayThing4[30] = {'g','r','a','n','d','m','a','.','s','a','y','s','.','h','i',0};;
       ouijaPrint(arrayThing4);
       homeing();}
       break;
     case 4:
       {
       char arrayThing5[30] = {'l','e','t','.','y','o','u','r','.','g','e','e','k','.','s','h','i','n','e',0};;
       ouijaPrint(arrayThing5);
     homeing();}
       break;
     default:
       disableMotors();
    }
   disableMotors();
}
//------------------------------------------------------------------------------
//This function was used to jog each axis 100 "steps" in each direction
//call in loop and comment out everything else to allow keyboard control
void moveWithKeyboard()
{
 enableMotors();
 if(Serial.available() > 0)
 {
   int temp = Serial.read();
   
   if(temp == 119 || temp == 87)//dec for 'w'
   {
     stepperY.moveTo(stepperY.currentPosition() - 100);
     //stepperY.setSpeed(2000);
     while(stepperY.distanceToGo() != 0)
     {
       stepperY.run();
     }
     Serial.print(stepperX.currentPosition());
     Serial.print("   ");
     Serial.println(stepperY.currentPosition());
   }
   if(temp == 115 || temp == 83)//dec for 's'
   {
     stepperY.moveTo(stepperY.currentPosition() + 100);
     //stepperY.setSpeed(2000);
     while(stepperY.distanceToGo() != 0)
     {
       stepperY.run();
     }
     Serial.print(stepperX.currentPosition());
     Serial.print("   ");
     Serial.println(stepperY.currentPosition());
   }
   if(temp == 97 || temp == 65)//dec for 'a'
   {
     stepperX.moveTo(stepperX.currentPosition() - 100);
     //stepperX.setSpeed(3000);
     while(stepperX.distanceToGo() != 0)
     {
       stepperX.run();
     }  
     Serial.print(stepperX.currentPosition());
     Serial.print("   ");
     Serial.println(stepperY.currentPosition());
   }
   if(temp == 100 || temp == 68)//dec for 'd'
   {
     stepperX.moveTo(stepperX.currentPosition() + 100.00);
     //stepperX.setSpeed(3000);
     while(stepperX.distanceToGo() != 0)
     {
       stepperX.run();
     }
     Serial.print(stepperX.currentPosition());
     Serial.print("   ");
     Serial.println(stepperY.currentPosition());
   }
   
   //move in larger increments with the right side of the keyboard
   if(temp == 105 || temp == 73)//dec for 'i'
   {
     stepperY.moveTo(stepperY.currentPosition() - 1000);
     while(stepperY.distanceToGo() != 0)
     {
       stepperY.run();
     }
     Serial.print(stepperX.currentPosition()); Serial.print("   "); Serial.println(stepperY.currentPosition());
   }
   if(temp == 107 || temp == 75)//dec for 'k'
   {
     stepperY.moveTo(stepperY.currentPosition() + 1000);
     //stepperY.setSpeed(2000);
     while(stepperY.distanceToGo() != 0)
     {
       stepperY.run();
     }
     Serial.print(stepperX.currentPosition()); Serial.print("   "); Serial.println(stepperY.currentPosition());
   }
   if(temp == 106 || temp == 74)//dec for 'j'
   {
     stepperX.moveTo(stepperX.currentPosition() - 2000);
     //stepperX.setSpeed(3000);
     while(stepperX.distanceToGo() != 0)
     {
       stepperX.run();
     }  
     Serial.print(stepperX.currentPosition()); Serial.print("   "); Serial.println(stepperY.currentPosition());
   }
   if(temp == 108 || temp == 76)//dec for 'l'
   {
     stepperX.moveTo(stepperX.currentPosition() + 2000);
     while(stepperX.distanceToGo() != 0)
     {
       stepperX.run();
     }
     Serial.print(stepperX.currentPosition()); Serial.print("   "); Serial.println(stepperY.currentPosition());
   }
 
 }
 disableMotors();
}
//------------------------------------------------------------------------------
void drawCircleCW()//(W.I.P.)
{
 enableMotors();
 stepperX.moveTo(12000);
 stepperY.moveTo(1000);
 while((stepperX.distanceToGo() != 0)||(stepperX.distanceToGo() != 0))
 {
   stepperX.run();
   stepperY.run();
 }
 
 stepperX.moveTo(14000);
 stepperY.moveTo(2000);
 while((stepperX.distanceToGo() != 0)||(stepperX.distanceToGo() != 0))
 {
   stepperX.run();
   stepperY.run();
 }
 
 stepperX.moveTo(12000);
 stepperY.moveTo(3000);
 while((stepperX.distanceToGo() != 0)||(stepperX.distanceToGo() != 0))
 {
   stepperX.run();
   stepperY.run();
 }
 
 stepperX.moveTo(8000);
 stepperY.moveTo(2000);
 while((stepperX.distanceToGo() != 0)||(stepperX.distanceToGo() != 0))
 {
   stepperX.run();
   stepperY.run();
 }
 
 stepperX.moveTo(12000);
 stepperY.moveTo(2000);
 while((stepperX.distanceToGo() != 0)||(stepperX.distanceToGo() != 0))
 {
   stepperX.run();
   stepperY.run();
 }
 disableMotors();
}

MAS3

#3
Jun 04, 2017, 12:43 am Last Edit: Jun 08, 2017, 11:34 pm by MAS3 Reason: Typos
Hoi DanDuino, welkom ook in het Nederlandstalige gedeelte.

Ten eerste word het niet heel erg op prijs gesteld als je op verschillende plaatsen dezelfde vraag stelt.
Dat heb je nu met deze vraag gedaan.
Ik heb gezien dat je de vraag eerder in het Engels hebt geprobeerd, schijnbaar verloopt de thread daar niet helemaal naar wens.
Verder is het wellicht lollig als je bijvoorbeeld smilies in je code hebt staan, maar ik denk niet de de IDE smilies op prijst stelt.
Je had inmiddels wel de [code] [/code]  tags gevonden, want dat heb je elders wel toegepast.

Quote
knippen en plakken en gaan dacht ik
Dat is het probleem als je dus ergens een code vandaan trekt, geen idee hebt hoe die code dan in elkaar zit, en er mee aan de slag moet.
Had je al gezien dat die code voor een Uno gemaakt is, en gekeken of je dan misschien iets moet aanpassen aan jouw Arduino ?

Aan pin 11 moet de enable voor de Y as, staat er bij gemeld in je code.
Jij hebt nu de X en de Y as beide aan pin 10 zitten en das dus niet de bedoeling.
Wat er aan pin 12 moet kun je gewoon uit de code halen, zoals ook de reden daarvoor.
Aan die pin heeft de maker van de code een grote drukknop bedacht.
Wanneer die knop wordt ingedrukt, moet er iets gaan gebeuren.
Die knop moet aan de andere kant aan GND worden verbonden.


De informatie zit gewoon in de code die je zelf hier laat zien.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

DanDuino

Mas dank je wel voor je reactie

Top echt dank je.
Ja ik weet dat ze dat niet op prijs stellen. Zal het ook niet meer doen
Ik had het idee dat er een taal probleem was

Als iemand mij vraagt over iets op mijn vak gebied 
Dan geef ik daar antwoord op .
Hier is het,,,, ja dan zit er iets niet goed.
Dat begreep ik ook

maar op een of andere manier kwam het niet goed over

Ik ga hier in ieder geval mee aan de slag

Ps ik heb een uno en mega nano bijna de hele familie
Mijn werk is normaal het bouwen van thema's
Totaal wat anders maar een klant vroeg me of ik hier naar kon kijken .a fijn week verder hahaha

Even wat anders ik mag toch wel een smilies toepassen bedoelde het alleen om er een vrolijke draai aan te geven.




MAS3

Natuurlijk mag je smilies gebruiken in je berichten, daar gaat het commentaar niet over.
Als je code plaatst, dan moet je dat in code tags doen zoals aangegeven.
Dan kijkt de forum software bijvoorbeeld in dat stuk niet meer of er een smilie gemaakt moet worden in de tekst.
Maar ook word het eenvoudiger om de code te lezen, en te kopiëren naar bijvoorbeeld de IDE.

Daarom is het de bedoeling dat je dat dus doet.

Die knop aan pin 12, daar kun je tijdelijk ook omheen werken.
Maar dan moet je dus ook de code tijdelijk aanpassen.
Het tijdelijk aanpassen van code kan heel handig zijn tijdens debuggen.
Wanneer je klaar bent met debuggen kun je dan die tijdelijke aanpassingen (zoals vertragingen, zodat duidelijker te zien is wat er gebeurt), er weer uit halen.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

DanDuino

ok nu weet ik zeker dat ik alles goed heb zitten

stepperX( 4step, 5dir);//X axis
stepperY( 6step, 7dir);//Y axis
ground naar ground arduino
enable 11
enable 10


maar de micro switches doen nog steeds niet hoe ik ze ook instel NO of NC
en de monitor zegt ook niets op baud rate 115200
geen verschil

jammer genoeg

iemand nog iedeeen

MAS3

Hoi.

Je zegt dat er niets over de seriële poort komt.
Weet je dat heel zeker ?
Wellicht dat je in plaats van een lege regel naar de seriële poort te sturen wanneer je de poort opent, een berichtje in die regel stopt om te melden via de poort dat dat actief is.
En aangezien je die poort al in gebruik hebt, is dat een perfect middel om jezelf te assisteren tijdens het debuggen.
Want je kunt als die poort eenmaal geopend is, allerlei dingen naar het aangesloten apparaat (jouw PC) sturen met daarin dingen die je vertellen wat er allemaal gebeurt op dat moment.
Dat maakt jou het verloop van je sketch ineens een heel stuk duidelijker.

Quote from: DanDuino
Code: [Select]
while(digitalRead(switct_y_top) == HIGH)
    {
      stepperY.moveTo(posY);
      stepperY.run();
      posY = posY - 1;
      //Serial.println(posY);
    }
Weet jij wat er hier gebeurt (alles) ?
Wat de voordelen en de (grote) nadelen er van zijn ?
Als dit hele stuk wordt overgeslagen, dan wordt er dus niet aan de voorwaarde van de while voordaan.
Controleer dat maar eens.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

DanDuino

goed ben weer een stap verder

pin 12 door middel van een druk knop op aarde
dan gaat X en Y ass bewegen en doen hun ronde vervolgens stop het

maar waar ik nog niet achter kom is dat de switches nog niet werken

en als hij gaat bewegen dan gaat hij nier eerst naar Home

ik ben al aardig op weg maar kan nog wel wat hulp gebruiken

BVD


MAS3

Okee, dan kun je dus eens gaan kijken of die switches überhaupt wel gezien worden.
De sturing van die motoren kun je voor nu even laten voor wat het is, want die werken nu.
Dus gaan we ons ergens anders op concentreren.

Laat eens zien hoe die switches zijn aangesloten, waar zitten draden aan en waar gaan die heen ?
Je kunt er voor kiezen om een lampje te laten branden als er een switch word geregistreerd, maar dan moet je daar een lampje en code voor maken.
Je kunt er ook voor kiezen om via serial te kijken hoe het met de switches staat.
Daar heb je in ieder geval geen extra hardware voor nodig, en de verbinding had je al staan.

Je moet nu eerst zien of het hardwarematig allemaal werkt en hoe dat dan werkt, dan kun je daarna dus met de code in combinatie met die motoren van je aan de slag.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

DanDuino

Quote from: DanDuino
Code: [Select]
while(digitalRead(switct_y_top) == HIGH)
   {
     stepperY.moveTo(posY);
     stepperY.run();
     posY = posY - 1;
     //Serial.println(posY);
   }
Weet jij wat er hier gebeurt (alles) ?
Wat de voordelen en de (grote) nadelen er van zijn ?
Als dit hele stuk wordt overgeslagen, dan wordt er dus niet aan de voorwaarde van de while vooldaan.
Controleer dat maar eens



zo na weer wat andere dingen te hebben gedaan kan ik eindelijk weer verder met dit project.

ik ben nog steeds op het punt om dit alles te begrijpen maar ik vind het moeilijk
je vroeg begrijp je dit (alles)
het blijkt dus van niet , jammer genoeg




DanDuino

het programma start zodra ik pin 12 met ground verbind.

homing werkt niet ,heb alle switches getest niet via serial omdat ik dat niet voor elkaar krijg

wat ik probeer te snappen is waarom als ik pin 12 to ground verbind hij niet eerst naar zijn begin punt gaat

MAS3

Het programma begint inderdaad zodra je pin 12, oftewel bigButton met GND verbindt, want dat is wat er in je loop staat (het enige dat er in staat).
Dus tot er op die knop gedrukt word, word er alleen naar die knop gekeken.
Dus dat is juist.

Je schijnt iets niet voor mekaar te krijgen via de seriële verbinding.
Nu is dus de vraag wat je niet voor mekaar krijgt.
Krijg je niets te zien via de seriële verbinding, of weet je niet hoe je iets kunt versturen op die wijze ?
Ik weet het niet maar "ik krijg het niet voor mekaar " is hetzelfde als roepen "het werkt niet"; niemand kan er niets mee als er niet meer informatie word gegeven.


Zie je de blokken code die tussen { } staan en vooraf gegaan worden door de tekst "void" en dan een naam ?
Dat zijn functies.
Functies moeten worden aangeroepen.
En als je dat niet doet, dan wordt zo'n functie dus niet uitgevoerd.
Ik denk niet dat jij eerst naar het begin punt moet gaan, maar als je dat wil, dan moet je m dus eerst naar de betreffende functie sturen.
Dat heb je nu niet in je loop zitten, maar wel er voor (en dat lijkt me ook de betere oplossing).

Verder gebeurt er een hele hoop in dat stukje waar je naar het begin punt gaat.
Maar eerlijk gezegd begrijp ik niet waarom dat allemaal nodig zou zijn.
Zal wel aan mij liggen.
Ik zie wel dat er in dat stukje misschien al iets via de seriële poort word gestuurd, alleen is die lijn uitgeschakeld.
En voor het debuggen zou ik er veel meer informatie instoppen die via serieel verzonden word.
Zoals de mededeling dat je een poging gaat doen om het beginpunt op te zoeken, en wat er precies in elke stap gebeurt.
Want daar word je wijzer van.
Have a look at "blink without delay".
Did you connect the grounds ?
Je kunt hier ook in het Nederlands terecht: http://arduino.cc/forum/index.php/board,77.0.html

Go Up