Napadlo mě vyzkoušet analogový vstup. Připojil jsem na něj tahový potenciometr, výsledek jsem nechal posílat na sériový port, kde jsem zjistil, že má rozsah cca 0-1000. Jako výstup jsem zvolil pětici LEDek, pro každou jsem vyčlenil pětinu naměřené hodnoty a podle toho nastavil jejich svícení.
Program tentokrát s malým využitím pole (Array) abych pochopil rozdíl oproti mé „mateřštině“ PHP:
int sensorPin = A0; // select the input pin for the potentiometer (or other analog input)
int pinArray[] = {2,3,4,5,6}; // array of outputs LED pins
int count = 0;
int sensorValue = 0; // variable to store the value coming from the sensor
void setup() { // declare the pinArray as an OUTPUT:
for (count=0; count<6; count++) {
pinMode(pinArray[count], OUTPUT);
}
}
void loop() { // read the value from the sensor:
sensorValue = analogRead(sensorPin); // we have 5 LEDs for 0-1000 range of senzorValue
if (sensorValue>0){digitalWrite(pinArray[0], HIGH);} // 1-200 lights 1 LED
if (sensorValue>201){digitalWrite(pinArray[1], HIGH);} // 201-400 lights 2 LED
if (sensorValue>401){digitalWrite(pinArray[2], HIGH);} // 401-600 lights 3 LED
if (sensorValue>601){digitalWrite(pinArray[3], HIGH);} // 601-800 lights 4 LED
if (sensorValue>801){digitalWrite(pinArray[4], HIGH);} // 801-1000 lights 5 LED
delay(50);
for (count=0;count<6;count++) {
digitalWrite(pinArray[count], LOW);
}
}
Otevřít projekt v
, online Arduino a ESP32 simulátoru
Teď koukám, že ta definice rozsahu by šla taky pomocí for a jednoho řádku místo pěti, ale zas tolik bych neušetřil, uvidíme ráno před natáčením videa 🙂