25-08-2019, 11:45
Witam
Jestem początkującym użytkownikiem Arduino. W pierwszym swoim "projekcie" podłączyłem 3 diody i napisałem program który działa ale zastanawiam się co stosować DDR/PORT czy pinMode/digitalWrite. Obydwie funkcje działają z tym że PORT jest szybsze niż digitalWrite pytanie jest następujące czy zaczynać programować od PORT czy od digitalWrite ?
Poniżej dwa kody źródłowe:
Jestem początkującym użytkownikiem Arduino. W pierwszym swoim "projekcie" podłączyłem 3 diody i napisałem program który działa ale zastanawiam się co stosować DDR/PORT czy pinMode/digitalWrite. Obydwie funkcje działają z tym że PORT jest szybsze niż digitalWrite pytanie jest następujące czy zaczynać programować od PORT czy od digitalWrite ?
Poniżej dwa kody źródłowe:
Kod:
unsigned long aktualnyCzas = 0;
unsigned long zapamietanyCzas = 0;
unsigned long roznicaCzasu = 0;
byte stan = 0;
void setup() {
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
}
void loop() {
//PORTB = B00000111;
//digitalWrite(8, HIGH);
aktualnyCzas = millis();
roznicaCzasu = aktualnyCzas - zapamietanyCzas;
if (roznicaCzasu >= 1000UL) {
zapamietanyCzas = aktualnyCzas;
stan++;
}
if (stan == 3)
{
stan = 0;
}
switch (stan) {
case 0:
digitalWrite(10, LOW);
digitalWrite(8, HIGH);
break;
case 1:
digitalWrite(8, LOW);
digitalWrite(9, HIGH);
break;
case 2:
digitalWrite(9, LOW);
digitalWrite(10, HIGH);
break;
}
}
Kod:
unsigned long aktualnyCzas = 0;
unsigned long zapamietanyCzas = 0;
unsigned long roznicaCzasu = 0;
byte stan = 0;
void setup() {
DDRB = B00000111;
PORTB = B00000001;
}
void loop() {
aktualnyCzas = millis();
roznicaCzasu = aktualnyCzas - zapamietanyCzas;
if (roznicaCzasu >= 1000UL) {
zapamietanyCzas = aktualnyCzas;
if (PORTB & _BV(2))
{
PORTB = PORTB << 1 | 1;
}
else
{
PORTB <<= 1;
}
}
}