Arduino Polska Forum
jak zdublować wyjścia - Wersja do druku

+- Arduino Polska Forum (https://forum.arduinopolska.pl)
+-- Dział: Korzystanie z Arduino (https://forum.arduinopolska.pl/dzial-korzystanie-z-arduino)
+--- Dział: Piaskownica (https://forum.arduinopolska.pl/dzial-piaskownica)
+--- Wątek: jak zdublować wyjścia (/watek-jak-zdublowa%C4%87-wyj%C5%9Bcia)



jak zdublować wyjścia - maly_13 - 03-04-2021

witam
dopiero raczkuje ale jak zdublować wyjścia tak żeby red był na wyjściu 14 i np 20 ....

int red = 14;
int amber = 15;
int green = 16;
int timer = 300;
int timer1 = 100;

void setup(){

  pinMode(red, OUTPUT);
  pinMode(amber, OUTPUT);
  pinMode(green, OUTPUT);
 
}

void loop() {
digitalWrite(red, HIGH); 
  delay(10000);             
  digitalWrite(amber, HIGH);
  delay(1000);           
  digitalWrite(amber, LOW);
  digitalWrite(red, LOW); 
  digitalWrite(green, HIGH);
  delay(15000);             
  digitalWrite(green, LOW);
  digitalWrite(amber, HIGH);
  delay(1000);           
  digitalWrite(amber, LOW);   
 
}


RE: jak zdublować wyjścia - Robson Kerman - 03-04-2021

Funkcja digitalWrite(uint8_t, uint8_t) wpisuje wartość na jeden pin.
Jeśli chcesz zmieniać stan dwóch pinów, to albo napisz sobie przeciążenie funkcji,
np:
Kod:
void digitalWrite(uint8_t p1, uint8_t p2, bool stan){
  digitalWrite(p1, stan);
  digitalWrite(p2, stan);
}

Albo pisz na rejestrach. Nałożysz sobie maskę na port i możesz jednym poleceniem ustawiać wartości na wielu pinach jednocześnie.

P.S.
Ach, jeszcze jedno. Pisząc w ten sposób:

int red = 14;
int amber = 15;
int green = 16;
int timer = 300;
int timer1 = 100;

program zajmuje 10 bajtów więcej niż gdybyś napisał to tak:

#define red     14
#define amber 15
#define green  16
#define timer   300
#define timer1 100