Hej.
Ja, det er Arduino Mega2560 jeg er i gang med.
Som sagt drejer det sig om at een knap (indgang) kan slukke alle udgange.
Her er koden på systemet:
// Multiple toggles!
const int button1 = 2; // LED pin number
const int led1Pin = 30;
const int button2 = 3;
const int led2Pin = 31;
const int button3 = 4;
const int led3Pin = 32;
const int button4 = 5;
const int led4Pin = 33;
const int button5 = 6;
const int led5Pin = 34;
const int led5Pin2 = 35;
const int button6 = 7;
const int led6Pin = 36;
const int led6Pin2 = 37;
const int button7 = 8;
const int led7Pin = 38;
const int button8 = 9;
const int led8Pin = 39;
const int led8Pin2 = 44;
const int button9 = 10;
const int led9Pin = 40;
const int led9Pin2 = 45;
const int button10 = 11;
const int led10Pin = 41;
char bstate1 = 0;
char bstate2 = 0;
char bstate3 = 0;
char bstate4 = 0;
char bstate5 = 0;
char bstate6 = 0;
char bstate7 = 0;
char bstate8 = 0;
char bstate9 = 0;
char bstate10 = 0;
char bstate11 = 0;
char bstate12 = 0;
unsigned long bcount1 = 0; // button debounce timer.
unsigned long bcount2 = 0;
unsigned long bcount3 = 0;
unsigned long bcount4 = 0;
unsigned long bcount5 = 0;
unsigned long bcount6 = 0;
unsigned long bcount7 = 0;
unsigned long bcount8 = 0;
unsigned long bcount9 = 0;
unsigned long bcount10 = 0;
unsigned long bcount11 = 0;
unsigned long bcount12 = 0;
char led1State = LOW; // initialise the LED
char led2State = LOW;
char led3State = LOW;
char led4State = LOW;
char led5State = LOW;
char led6State = LOW;
char led7State = LOW;
char led8State = LOW;
char led9State = LOW;
char led10State = LOW;
char led11State = LOW;
char led12State = LOW;
// Have we completed the specified interval since last confirmed event?
// "marker" chooses which counter to check
boolean timeout(unsigned long *marker, unsigned long interval) {
if (millis() - *marker >= interval) {
*marker += interval; // move on ready for next interval
return true;
}
else return false;
}
// Deal with a button read; true if button pressed and debounced is a new event
// Uses reading of button input, debounce store, state store and debounce interval.
// Routines by Paul__B of Arduino Forum
boolean butndown(char button, unsigned long *marker, char *butnstate, unsigned long interval) {
switch (*butnstate) { // Odd states if was pressed, >= 2 if debounce in progress
case 0: // Button up so far,
if (button == HIGH) return false; // Nothing happening!
else {
*butnstate = 2; // record that is now pressed
*marker = millis(); // note when was pressed
return false; // and move on
}
case 1: // Button down so far,
if (button == LOW) return false; // Nothing happening!
else {
*butnstate = 3; // record that is now released
*marker = millis(); // note when was released
return false; // and move on
}
case 2: // Button was up, now down.
if (button == HIGH) {
*butnstate = 0; // no, not debounced; revert the state
return false; // False alarm!
}
else {
if (millis() - *marker >= interval) {
*butnstate = 1; // jackpot! update the state
return true; // because we have the desired event!
}
else
return false; // not done yet; just move on
}
case 3: // Button was down, now up.
if (button == LOW) {
*butnstate = 1; // no, not debounced; revert the state
return false; // False alarm!
}
else {
if (millis() - *marker >= interval) {
*butnstate = 0; // Debounced; update the state
return false; // but it is not the event we want
}
else
return false; // not done yet; just move on
}
default: // Error; recover anyway
{
*butnstate = 0;
return false; // Definitely false!
}
}
}
// ----------------------------- toggle ------------------------------------------
char toggle(char *flip) { // Yes, it toggles the variable pointed to
if (*flip == LOW) {
*flip = HIGH;
}
else {
*flip = LOW;
}
return *flip;
}
void setup() {
pinMode(button1, INPUT_PULLUP);
pinMode(led1Pin, OUTPUT);
pinMode(button2, INPUT_PULLUP);
pinMode(led2Pin, OUTPUT);
pinMode(button3, INPUT_PULLUP);
pinMode(led3Pin, OUTPUT);
pinMode(button4, INPUT_PULLUP);
pinMode(led4Pin, OUTPUT);
pinMode(button5, INPUT_PULLUP);
pinMode(led5Pin, OUTPUT);
pinMode(led5Pin2, OUTPUT);
pinMode(button6, INPUT_PULLUP);
pinMode(led6Pin, OUTPUT);
pinMode(led6Pin2, OUTPUT);
pinMode(button7, INPUT_PULLUP);
pinMode(led7Pin, OUTPUT);
pinMode(button8, INPUT_PULLUP);
pinMode(led8Pin, OUTPUT);
pinMode(led8Pin2, OUTPUT);
pinMode(button9, INPUT_PULLUP);
pinMode(led9Pin, OUTPUT);
pinMode(led9Pin2, OUTPUT);
pinMode(button10, INPUT_PULLUP);
pinMode(led10Pin, OUTPUT);
pinMode(22, INPUT_PULLUP);
pinMode(42, OUTPUT);
pinMode(23, INPUT_PULLUP);
pinMode(43, OUTPUT);
digitalWrite (led1Pin, HIGH);
digitalWrite (led2Pin, HIGH);
digitalWrite (led3Pin, HIGH);
digitalWrite (led4Pin, HIGH);
digitalWrite (led5Pin, HIGH);
digitalWrite (led5Pin2, HIGH);
digitalWrite (led6Pin, HIGH);
digitalWrite (led6Pin2, HIGH);
digitalWrite (led7Pin, HIGH);
digitalWrite (led8Pin, HIGH);
digitalWrite (led8Pin2, HIGH);
digitalWrite (led9Pin, HIGH);
digitalWrite (led9Pin2, HIGH);
digitalWrite (led10Pin, HIGH);
}
void loop() {
int sensorValue22 = digitalRead(22);
if (sensorValue22)
{
digitalWrite(42, HIGH); // set the LED on
}
else
digitalWrite(42, LOW); // set the LED off
int sensorValue23 = digitalRead(23);
if (sensorValue23)
{
digitalWrite(43, HIGH); // set the LED on
}
else
digitalWrite(43, LOW); // set the LED off
// Toggle LED if button debounced
if (butndown(digitalRead(button1), &bcount1, &bstate1, 10UL )) {
toggle(&led1State);
digitalWrite(led1Pin, led1State);
}
if (butndown(digitalRead(button2), &bcount2, &bstate2, 10UL )) {
toggle(&led2State);
digitalWrite(led2Pin, led2State);
}
if (butndown(digitalRead(button3), &bcount3, &bstate3, 10UL )) {
toggle(&led3State);
digitalWrite(led3Pin, led3State);
}
if (butndown(digitalRead(button4), &bcount4, &bstate4, 10UL )) {
toggle(&led4State);
digitalWrite(led4Pin, led4State);
}
if (butndown(digitalRead(button5), &bcount5, &bstate5, 10UL )) {
toggle(&led5State);
digitalWrite(led5Pin, led5State);
digitalWrite(led5Pin2, led5State);
}
if (butndown(digitalRead(button6), &bcount6, &bstate6, 10UL )) {
toggle(&led6State);
digitalWrite(led6Pin, led6State);
digitalWrite(led6Pin2, led6State);
}
if (butndown(digitalRead(button7), &bcount7, &bstate7, 10UL )) {
toggle(&led7State);
digitalWrite(led7Pin, led7State);
}
if (butndown(digitalRead(button8), &bcount8, &bstate8, 10UL )) {
toggle(&led8State);
digitalWrite(led8Pin, led8State);
digitalWrite(led8Pin2, led8State);
}
if (butndown(digitalRead(button9), &bcount9, &bstate9, 10UL )) {
toggle(&led9State);
digitalWrite(led9Pin, led9State);
digitalWrite(led9Pin2, led9State);
}
if (butndown(digitalRead(button10), &bcount10, &bstate10, 10UL )) {
toggle(&led10State);
digitalWrite(led10Pin, led10State);
}
}