Переменная INT

Тема в разделе "Arduino & Shields", создана пользователем barmaley_74, 1 ноя 2018.

  1. barmaley_74

    barmaley_74 Нуб

    Кто разъяснит мне, начинающему, почему если переменная 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);
    }
     
  2. Это результат измерения определен в этом диапазоне. И он записывается в переменную, поддерживающую больший диапазон.
     
  3. DetSimen

    DetSimen Guest

    просто, ввиду 10-битности АЦП, значения с него читаются от 0 до два в десятой степени, то бишь 1024-1;
     
    barmaley_74 нравится это.
  4. а как надо?

    ардуине пофиг на ваши числа, он понимает только биты, вот int занимает в памяти 2 байта
     
  5. DetSimen

    DetSimen Guest

    храница эти 10 бит могут в любой переменной, которая имеет тип больше 10 битов, хоть в uint64_t
     
  6. barmaley_74

    barmaley_74 Нуб

    Спасибо, всё понял кажется. То есть АЦП у нас 10 битное?
     
  7. DetSimen

    DetSimen Guest

    именно так, матьтваю. 10 битное
     
    Daniil нравится это.