7-сегментный дисплей с потенциометром

(Предыстория) Итак, я взял курс компьютерной инженерии в средней школе (уровень 11 класса), где я немного узнал о макете, а также о ардуино (я хотел бы немного подчеркнуть). Прошло 5 лет, и я почти ничего не помню, но на днях мой младший брат начал ходить в тот же класс. У него есть следующее задание, которое я тоже постарался выполнить для развлечения:

(Не предыстория) Мне нужно сделать так, чтобы потенциометр управлял 7-сегментным дисплеем, чтобы он отображал число (0-9) в зависимости от значения потенциометра. Я запрыгнул на tinkercad, чтобы проверить материал, прежде чем что-то делать, и очень быстро придумал следующее:

Я протестировал вышеприведенную модель и знаю, что она работает, но следующий код не работает.

int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;
int potentiometer = 9;

void setup() {                
  for(int pins = 2; pins <=8; pins++){
  pinMode(pins, OUTPUT);
 }  
  pinMode(potentiometer, INPUT);
}

void loop() {
  int pRes;
  pRes = analogRead(potentiometer);
  if (pRes >=0 && pRes <=101){
    //0
    digitalWrite(a, LOW);   
    digitalWrite(b, LOW);   
    digitalWrite(c, LOW);   
    digitalWrite(d, LOW);   
    digitalWrite(e, LOW);   
    digitalWrite(f, LOW);   
    digitalWrite(g, HIGH);   
    }
  else if (pRes >=102 && pRes <=203){
     //1
    digitalWrite(a, HIGH);   
    digitalWrite(b, LOW);   
    digitalWrite(c, LOW);   
    digitalWrite(d, HIGH);   
    digitalWrite(e, HIGH);   
    digitalWrite(f, HIGH);   
    digitalWrite(g, HIGH);
    }
  else if (pRes >=204 && pRes <=305){
     //2
    digitalWrite(a, LOW);   
    digitalWrite(b, LOW);   
    digitalWrite(c, HIGH);   
    digitalWrite(d, LOW);   
    digitalWrite(e, LOW);   
    digitalWrite(f, HIGH);   
    digitalWrite(g, LOW); 
    }
  else if (pRes >=306 && pRes <=407){
    //3
    digitalWrite(a, LOW);   
    digitalWrite(b, LOW);   
    digitalWrite(c, LOW);   
    digitalWrite(d, LOW);   
    digitalWrite(e, HIGH);   
    digitalWrite(f, HIGH);   
    digitalWrite(g, LOW);  
    }
  else if (pRes >=408 && pRes <=509){
    //4
    digitalWrite(a, HIGH);   
    digitalWrite(b, LOW);   
    digitalWrite(c, LOW);   
    digitalWrite(d, HIGH);   
    digitalWrite(e, HIGH);   
    digitalWrite(f, LOW);   
    digitalWrite(g, LOW);   
  }
  else if (pRes >=510 && pRes <=611){
    //5
    digitalWrite(a, LOW);   
    digitalWrite(b, HIGH);   
    digitalWrite(c, LOW);   
    digitalWrite(d, LOW);   
    digitalWrite(e, HIGH);   
    digitalWrite(f, LOW);   
    digitalWrite(g, LOW);  
    }
  else if (pRes >=612 && pRes <=713){
    //6
    digitalWrite(a, LOW);   
    digitalWrite(b, HIGH);   
    digitalWrite(c, LOW);   
    digitalWrite(d, LOW);   
    digitalWrite(e, LOW);   
    digitalWrite(f, LOW);   
    digitalWrite(g, LOW);  
    }
  else if (pRes >=714 && pRes <=815){
    //7
    digitalWrite(a, LOW);   
    digitalWrite(b, LOW);   
    digitalWrite(c, LOW);   
    digitalWrite(d, HIGH);   
    digitalWrite(e, HIGH);   
    digitalWrite(f, HIGH);   
    digitalWrite(g, HIGH); 
    }
  else if (pRes >=816 && pRes <=917){
    //8
    digitalWrite(a, LOW);   
    digitalWrite(b, LOW);   
    digitalWrite(c, LOW);   
    digitalWrite(d, LOW);   
    digitalWrite(e, LOW);   
    digitalWrite(f, LOW);   
    digitalWrite(g, LOW);
    }
  else if (pRes >=918 && pRes <=1023){
    //9
    digitalWrite(a, LOW);   
    digitalWrite(b, LOW);   
    digitalWrite(c, LOW);   
    digitalWrite(d, HIGH);   
    digitalWrite(e, HIGH);   
    digitalWrite(f, LOW);   
    digitalWrite(g, LOW);
    }
}

Может ли кто-нибудь объяснить мне, что я сделал не так (и предложить исправления)?

, 👍0

Обсуждение

В каком смысле это "не работает"?, @Majenko

Я думаю, что вы неправильно подключили потенциометр. Средний вывод идет к аналоговому входному выводу (вы использовали цифровой вывод на одном из внешних выводов), внешние контакты-к заземлению и 5 В соответственно., @chrisl

я не вижу отладочного кода ... откуда вы знаете, что горшок читается так, как ожидалось?, @jsotola


1 ответ


Лучший ответ:

1
  1. В качестве аналоговых входов можно использовать только контакты с метками, начинающимися с “A” (от A0 до A5 на Uno) .
  2. Вывод потенциометра, который в данный момент не подключен, должен быть подключен к 5V.
,

Спасибо за помощь, не могу поверить, что упустил что-то подобное., @Dezter

Кроме того, я переключил ВЫСОКИЙ и НИЗКИЙ lol, @Dezter