Кто разъяснит мне, начинающему, почему если переменная INT определена в документации как с диапазонами от -32,768 до 32,767, а при использовании в программе она определена диапазоном от 0 до 1024? Привожу пример программы для начинающих: // даём разумные имена для пинов со светодиодом // и потенциометром (англ potentiometer или просто «pot») #define LED1_PIN 9 #define POT_PIN A0 #define LED2_PIN 11 void setup() { // пин со светодиодом — выход, как и раньше... pinMode(LED1_PIN, OUTPUT); pinMode(LED2_PIN, OUTPUT); // ...а вот пин с потенциометром должен быть входом // (англ. «input»): мы хотим считывать напряжение, // выдаваемое им pinMode(POT_PIN, INPUT); } void loop() { // заявляем, что далее мы будем использовать 2 переменные с // именами rotation и brightness, и что хранить в них будем // целые числа (англ. «integer», сокращённо просто «int») int rotation1, rotation2, brightness1, brightness2; // считываем в rotation напряжение с потенциометра: // микроконтроллер выдаст число от 0 до 1023 // пропорциональное углу поворота ручки rotation1 = analogRead(POT_PIN); rotation2 = 1023 - rotation1; // в brightness записываем полученное ранее значение rotation // делённое на 4. Поскольку в переменных мы пожелали хранить // целые значения, дробная часть от деления будет отброшена. // В итоге мы получим целое число от 0 до 255 brightness1 = rotation1 / 4; brightness2 = rotation2 / 4; // выдаём результат на светодиод analogWrite(LED1_PIN, brightness1); analogWrite(LED2_PIN, brightness2); }
Это результат измерения определен в этом диапазоне. И он записывается в переменную, поддерживающую больший диапазон.
просто, ввиду 10-битности АЦП, значения с него читаются от 0 до два в десятой степени, то бишь 1024-1;