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);
}
}
Может ли кто-нибудь объяснить мне, что я сделал не так (и предложить исправления)?
@Dezter, 👍0
Обсуждение1 ответ
Лучший ответ:
- В качестве аналоговых входов можно использовать только контакты с метками, начинающимися с “A” (от A0 до A5 на Uno) .
- Вывод потенциометра, который в данный момент не подключен, должен быть подключен к 5V.
Спасибо за помощь, не могу поверить, что упустил что-то подобное., @Dezter
Кроме того, я переключил ВЫСОКИЙ и НИЗКИЙ lol, @Dezter
- Как изменить переменную при нажатии кнопки, подключенной к контакту 2
- Ошибка переменной does not name a type!
- Использование YS-IRTM с Arduino Uno
- IRRemote отправлять и получать тем же Arduino
- Объявленная переменная внутри void setup не видится в void loop
- Акцептант векселей ИКТ
- Как преобразовать значения RGB в интенсивность
- Добавление нулевого заполнения к десятичным значениям
В каком смысле это "не работает"?, @Majenko
Я думаю, что вы неправильно подключили потенциометр. Средний вывод идет к аналоговому входному выводу (вы использовали цифровой вывод на одном из внешних выводов), внешние контакты-к заземлению и 5 В соответственно., @chrisl
я не вижу отладочного кода ... откуда вы знаете, что горшок читается так, как ожидалось?, @jsotola