28-10-2018, 19:18
Matematycy zawsze wbijają ten gwóźdź do końca. Pewnie jakiś zwykły (leniwy) informatyk by napisał to jeszcze krócej:
Ale najważniejsze, że działa.
Kod:
uint16_t nastawa; //0000 0000 0000 0000 liczba 16bit by pomiescic 11 przekaznikow
uint8_t bity=11;
void setup() {
for (int i=2; i<bity+2;i++)
{
pinMode(i,OUTPUT); //piny 2,3,4,5,6,7,8,9,10,11,12 ustawiamy jako wyjścia, tak by 0 i 1 od UARTA nie ruszac
}
Serial.begin(115200);
}
void loop() {
if (nastawa++>=2047) nastawa=0;
Serial.print("Aktualna nastawa: ");
Serial.print(nastawa);
Serial.print(", a w bitach: ");
Serial.print(nastawa,2);
Serial.print(", co odpowiada wartosci: ");
Serial.print(nastawa*40);
Serial.println("H");
Serial.println("Stan pinow, od lewej pin2: ");
for(int i=0;i<bity;i++) //ustawianie pinów
{
boolean jakisbit=bitRead(nastawa,i);
digitalWrite(bity+1-i,jakisbit);
Serial.print(digitalRead(i+2));
Serial.print(",");
}
Serial.println();
delay(10);
//można też zatrzymać po wydrukowaniu wszystkiego:
if(nastawa>=2047) while(1);
}
Miło być decenianym https://buycoffee.to/kaczakat