Vis indlæg

Denne sektion tillader dig at se alle indlæg oprettet af dette medlem. Bemærk at du kun kan se indlæg der er oprettet i områder du i øjeblikket har adgang til.


Beskeder - EVR5

Sider: [1]
1
Arduino & Lign. / Sv: Tænd/ sluk af flere udgange samtidigt.
« Dato: August 23, 2018, 16:22:55 »
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);
  }
}

2
Arduino & Lign. / "Keyboard" på 16 knapper til USB til PC.
« Dato: Januar 13, 2018, 21:00:55 »
Hej Alle.
Jeg går med tanken om at lave et keyboard med 16 knapper/ taster til brug af genvejstaster. De skal helst gerne kun være alfabet (a, b, c, .....) ikke specialtegn.
Jeg kunne have brugt et numerisk tastatur, men der er ikke nok knapper til mit brug.
Håber nogen kan hjælpe - på forhånd tak.
Erik

3
Arduino & Lign. / Tænd/ sluk af flere udgange samtidigt.
« Dato: Oktober 03, 2017, 12:16:53 »
Jeg har lidt problemer med programmering - måske har jeg bare stirret mig blind på det.
Det jeg ønsker er:
Kande tændt/ slukke flere udgange samtidigt - hvordan gøres dette?
Ved hjælp af en indgang (knap) kan slukke alle udgange.

Opbygningen er således 12 relæer til hver sin udgang der styres af kontakter (alt dette virker), men på en af indgangene vil jeg gerne have styret 2 udgange, så er det nemmere ledningsmæssigt for mig - dette skal jeg have hjælp til.
Der skal også være en indgang der skal kunne slukke alle udgange - dette skal jeg have hjælp til.

Håber der er nogen der kan hjælpe eller pege der rigtige vej for en løsning.

Hilsen
Erik

Sider: [1]