hulp bij het programmeren
15 berichten
• Pagina 2 van 2 • 1, 2
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: hulp bij het programmeren
Dan wordt je code ietsje anders (3 statements veranderd)
Vergeet je niet om een weerstand van 10K oid (niet te groot en niet te klein qua waarde) tussen GND en de datapin te doen bij de schakelaars. anders wordt de knop ingang onvoorspelbaar. Met de weerstand trek je de ingang LOW als de schakelaar open staat.
- Code: Alles selecteren
//
// 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]) == HIGH) {
//
// 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]) == HIGH) {
//
// 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++){
//
// switches must have pull down resistors on data pin (say 10K) to avoid floating input
//
pinMode(switchArray[i][j], INPUT);
}
//
// 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);
}
}
}
Vergeet je niet om een weerstand van 10K oid (niet te groot en niet te klein qua waarde) tussen GND en de datapin te doen bij de schakelaars. anders wordt de knop ingang onvoorspelbaar. Met de weerstand trek je de ingang LOW als de schakelaar open staat.
Advertisement
Re: hulp bij het programmeren
Hey nico, heb het gedaan hoe je zei met dat ledje heb gewoon de + en de min omgedraaid bij de schakelaars en het ledje deed het 5x, 10x, 15x. dus terug getest met de tellers. En daar deed die het niet dus wat ga ik nu doen is de uitgangen aan een relais zetten met voorzet transistor en deze dan aansturen. Ik laat nog iets weten hopelijk tegen half volgende week als ik de onderdelen heb en gesoldeerd laat ik het hier weten. Kun je hier ook filpjes plaatsen? als het zo is zet ik hier een filmpje aals alles behoorlijk werkt
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: hulp bij het programmeren
Heb je geen specificaties van die tellers?
Re: hulp bij het programmeren
hoi nico,
het werkt hier is de link om het filmpje te bekijken hopelijk zie je het.
tis een deel maar het werkt het resterende filmpje van de 3 borden krijg je achteraf
many many thx
https://www.facebook.com/photo.php?v=10 ... _processed
het werkt hier is de link om het filmpje te bekijken hopelijk zie je het.
tis een deel maar het werkt het resterende filmpje van de 3 borden krijg je achteraf
many many thx
https://www.facebook.com/photo.php?v=10 ... _processed
- nicoverduin
- Berichten: 5043
- Geregistreerd: 13 Mei 2013, 20:57
- Woonplaats: Heemskerk
Re: hulp bij het programmeren
Hij zegt dat de inhoud niet beschikbaar is. Maar geeft niet... Het werkt en dat is het belangrijkste
15 berichten
• Pagina 2 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: ajuzegaj en 17 gasten