hulp bij het programmeren

Arduino specifieke Software
Berichten: 7
Geregistreerd: 27 Okt 2013, 14:30
Woonplaats: Turnhout

hulp bij het programmeren

Berichtdoor joris1975 » 27 Okt 2013, 14:41

Hoi iedereen die dit zou lezen, ben hier nieuw in en zeker in het programmeren. zou graag wat hulp hebben over een project dat ik zou willen starten. allereerst de gegevens geven wat ik zou willen doen. Wat ik gaar had willen doen met de arduino is, een teller aan sturen waarvan drie borden. elk bord zou dmv 3 knoppen elke knop staat voor een een cijfer. 1 ste knop 5 punten, de 2de 10p en de derde 15p. dus als ze op knop 1 drukken 5 pulsen of weet ik hoe. kan dit voor 3 stuks in een arduino gestoken worden of moet ik 3 aparte bordjes kopen voor elk scorebord? wie kan of wil me hier bij helpen? hopelijk wat goede hulp. merci alvast om dit te lezen.

Advertisement

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: hulp bij het programmeren

Berichtdoor nicoverduin » 27 Okt 2013, 14:58

Joris
Het is mij nog niet helemaal duidelijk wat je wilt:
- je hebt het over borden. Wat voor borden?
- Wat is de bedoeling van die pulsen?
Als het beeld helder is kunnen we zien wat je aan hardware nodig hebt.
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 27 Okt 2013, 14:30
Woonplaats: Turnhout

Re: hulp bij het programmeren

Berichtdoor joris1975 » 27 Okt 2013, 16:31

wat ik wil doen is heb een scorebord van 3 ploegen. deze wil aansturen dmv per ploeg 3 knoppen die dan de eerste knop 5p (5 pulsen)kan toedelen een 2 10p (10 pulsen) en de derde knop 15p (15 pulsen)

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: hulp bij het programmeren

Berichtdoor nicoverduin » 27 Okt 2013, 17:14

Je geeft aan 5 pulsen, maar waarom pulsen, of is dat wat het score bord verwacht? als dat zo is dan begrijp ik dat je alleen die knoppen wil verwerken en pulsen afgeven (3 sets) naar het score bord?
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 27 Okt 2013, 14:30
Woonplaats: Turnhout

Re: hulp bij het programmeren

Berichtdoor joris1975 » 27 Okt 2013, 18:04

ja puslen want de in van de teller vraagt 0/1 pulsen bij elke puls telt hij een maal op. Moest dit gaan zou ik voor elk scorebord 3 knoppen willen weet niet of dit in een bordje kan ik kan wel 9 ingangen gebruiken (voor de schakelaars) en 3 uitg maar weet echt ni hoe ik hier moet mee beginnen. ben hier namelijk een leek in. heb al wat boekjes gelezen maar zie niet hoe ik moet beginnnen :-s hopelijk kun jij me op weg helpen?

Berichten: 108
Geregistreerd: 07 Aug 2013, 21:34

Re: hulp bij het programmeren

Berichtdoor KrisG » 27 Okt 2013, 19:11

Probeer het 'probleem' zo goed mogelijk te omschrijven, meestal is dat de halve oplossing.

Je wil dus 3 pulsen, 0/1 overgangen als uitgang.

Is de ingang van de panelen 5V ? hoeveel stroom trekken ze ?


Je wil ze kunnen sturen door 3 schakelaars/drukknoppen. Dat deel is niet zo moeilijk omdat je dat helemaal zelf in de hand hebt. Het enige waar je op wil letten is anti-dender maar dat kan geen probleem zijn.

Volgens mij kan je dit perfect met 1 Arduino aan.

Kris
Als je het probleem gedetailleerd genoeg omschrijft, heb je meestal al de oplossing.

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: hulp bij het programmeren

Berichtdoor nicoverduin » 27 Okt 2013, 20:12

ik heb ff een versie voor je gemaakt. Probeer hem te begrijpen. De vragen moeten vanzelf wel komen :)
Code: Alles selecteren
/**
 * @file     scorebord.ino
 * @author   Nico Verduin
 * @date     dd-mm-yyyy
 * @version  1.0
 * @mainPage
 * Sketch description
 */

/**
 * SVN version control. do not remove
 * $Revision$
 * $Date$
 * $Author$
 */
//
// pulse definitions
//
#define PULSEONTIME      150      // 250 milliseconds ON time
#define PULSEOFFTIME   150      // 250 milliseconds OFF time

//
// pin definitions : 3 groups of 3 switches makes processing easier
//

#define  SWITCH1_GROUP1      2   // Button 1 voor Groep 1
#define  SWITCH2_GROUP1      3   // Button 2 voor Groep 1
#define  SWITCH3_GROUP1      4   // Button 3 voor Groep 1
#define  SWITCH1_GROUP2      5   // Button 4 voor Groep 2
#define  SWITCH2_GROUP2      6   // Button 5 voor Groep 2
#define  SWITCH3_GROUP2      7   // Button 6 voor Groep 2
#define  SWITCH1_GROUP3      8   // Button 7 voor Groep 3
#define  SWITCH2_GROUP3      9   // Button 8 voor Groep 3
#define  SWITCH3_GROUP3      10   // Button 9 voor Groep 3
#define    PULSE1            11   // Pulse score 1
#define  PULSE2            12   // Pulse Score 2
#define  PULSE3            13  // Pulse score 3

//
// global vaiables
//
//
// put the switches in an array, makes processing easier
//
unsigned int switchArray[3][3] = {   { SWITCH1_GROUP1,SWITCH2_GROUP1, SWITCH3_GROUP1 },
                           { SWITCH1_GROUP2,SWITCH2_GROUP2, SWITCH3_GROUP2 },
                           { SWITCH1_GROUP3,SWITCH2_GROUP3, SWITCH3_GROUP3 } };
//
// put the pulse outputs in an array, makes processing easier
//
unsigned int pulseArray[3] =  { PULSE1, PULSE2, PULSE3 };
//
// switch states
//
bool switchState[3];         // false = switch is released, true switch is set
/**
 * @name readSwitches(unsigned int group)
 * @param group determines which group needs to be tested
 * @returns switchNumber index 0-2 or -1 if not pressed
 * reads the switches of one group. if 2 buttons are pressed at the same time, the button pressed with the lowest
 * index is taken. if no switch is pressed,
 */
int readSwitches(unsigned int group) {

   int switchNumber = -1;            // no switch pressed is default
   //
   // test if switch in group is pressed
   //
   for (unsigned int i = 0; i < 3; i++) {
      //
      // check each switch
      //
      if (digitalRead(switchArray[group][i]) == LOW) {
         //
         // check if we can process this switch
         //
         if (switchState[group] == false) {
            //
            // save switch number
            //
            switchNumber = i;
            //
            // set switch state
            //
            switchState[group] = true;
            //
            // and exit loop
            //
         }
         break;
      }
   }
   
   //
   // check if a switch was pressed or allowed
   //
   if (switchNumber == -1) {
      //
      // check if all switches are released
      //
      unsigned int i;
      for (i = 0; i < 3; i++) {
         if (digitalRead(switchArray[group][i]) == LOW) {
            //
            // still a switch pressed so may as wel exit loop
            //
            break;
         }
      }
      if (i == 3) {
         //
         // all switches are released otherwise i would never become 3
         //
         switchState[group] = false;
      }
   }
   return switchNumber;            // return value back to caller
}

/**
 * @name processSwitches(unsigned int group, unsigned int button)
 * @param group   group currently in process
 * @param button switch which was process
 */
void processSwitches(unsigned int group, unsigned int button) {

   unsigned int pulseCnt;         // number of pulses to generate

   //
   // determine the number of pulses needed based on button value.
   // as the index = 0-2 so the below formula is the easyway
   //
   pulseCnt = (button * 5) + 5;
   //
   // send the pulses out to the score board
   //
   for (unsigned int i= 0; i < pulseCnt; i++) {
      //
      // pulse on
      //
      digitalWrite(pulseArray[group], HIGH);
      //
      // wait pulse time on
      //
      delay(PULSEONTIME);
      //
      // pulse off
      //
      digitalWrite(pulseArray[group], LOW);
      //
      // wait pulse off time
      //
      delay(PULSEOFFTIME);
   }
}
/**
 * @name setup()
 * initializes the sketch once by power on or Reset
 */
void setup()
{
   //
   // set pin modes input
   //
   // 3 groups
   //
   for (unsigned int i = 0; i < 3; i++) {
      //
      // with each 3 inputs
      //
      for (unsigned int j = 0; j < 3; j++){
         pinMode(switchArray[i][j], INPUT_PULLUP);
      }
      //
      // and the corresponding output
      //
      pinMode(pulseArray[i], OUTPUT);
      //
      // reset switch states
      //
      switchState[i] = false;
   }
}

/**
 * @name loop()
 * loop functions is called continuously
 */
void loop()
{
   int button;            // determines which switch is pushed

   //
   // process per group
   //
   for (unsigned int i = 0; i < 3; i++){
      //
      // get the switch value
      //
      button = readSwitches(i);
      //
      // if a switch was pushed, process it
      //
      if (button != -1) {
         processSwitches(i, button);
      }
   }
}



Getest en werkend
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 27 Okt 2013, 14:30
Woonplaats: Turnhout

Re: hulp bij het programmeren

Berichtdoor joris1975 » 29 Okt 2013, 17:50

hoi nico, heb het programma in mijn arduino gezet en aangesloten maar heb niets, moet ik zelf nog iets bij voegen of? heb de schakelaars aan de pinnen aangesloten en de outputs aan men tellers, maar doet niks

greetz

Gebruikers-avatar
Berichten: 5043
Geregistreerd: 13 Mei 2013, 20:57
Woonplaats: Heemskerk

Re: hulp bij het programmeren

Berichtdoor nicoverduin » 29 Okt 2013, 18:45

Nou het ligt een beetje aan de tellers en de knoppen:
A) zijn de knoppen aan als deze aan GND schakelen? Of als ze naar de plus schakelen? Nu is het zo geprogrammeerd dat ze naar GND schakelen als ze aan zijn. Anders moet er een kleine programma wijziging gemaakt worden.
B) Ik weet niet wat de spanning is die nodig is om het score board te triggeren. 5v? 12V? 24V? .
Ik zou eerst die schakelaars ff goed zetten en dan ff op elke uitgang een ledje met weerstand 270 ohm in serie naar GND. Dan weet je of de knoppen werken en er pulsen uitkomen.
Daarna kan het zijn dat de pulsen te snel gaan. Ik heb 2 parameters in het begin gezet waarmee je de AAN en UIT tijd van een pulse kan veranderen. De waarde is in milliseconden.
Zorg je er ook voor dat de GNDs van de knoppen en de score board ook aan de GND van de Arduino worden verbonden? Anders gebeurt er nog steeds niets.
Maar ja je bent ook scheutig met info:)
Docent HBO Technische Informatica, Embedded ontwikkelaar & elektronicus
http://www.verelec.nl

Berichten: 7
Geregistreerd: 27 Okt 2013, 14:30
Woonplaats: Turnhout

Re: hulp bij het programmeren

Berichtdoor joris1975 » 29 Okt 2013, 22:04

ja ik weet het ben nieuw in het forum dus nog nooit hulp gevraagd dus ;-), nu de schakelaars zouden een plus moeten geven als ze gedrukt zijn dus. en de pulsen zouden een +5v moeten genereren. dus ga ik dat effe doen. me de schakelaars. ik laat het weten of het lukt ;-)

Volgende

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: ajuzegaj, olovuse, teliquuucow en 18 gasten