Помогите новичку написать код к проекту индикаторной панели
- Войдите на сайт для отправки комментариев
Добрый день уважаемые формумчане. Мне крайне срочно требуется помощь в важном для меня задании, индикация.
Точнее о задаче, планируется засветка цифр 3-х значных на 4-х панелях, всё должно работать через SPI как я понимаю и используется динамическая индикация, так как панель 3-х разрядные, так вот, к мк 4 панели будут подключены через всем известные сдвиговые регистры, по 2 регистра на 1 панель, я думаю догадались зачем) Вооот... Теперь мне нужен код который через ком порт будет получать цифру и засвечевать на конкретном индикаторе, а ещё внедрить в код строчку, суть которой заключается в том, чтобы получить следующую цифру для индикатора (т.е. каждому своя кнопочка), повторяюсь связь должна быть через RS-232, желательно с ответами, даже не желательно, а требуется, чтобы в терминале отображалось происходящее типа:
Terminal:
P1 - 232
P2 - 246
P1 - 233
ну короче говоря, приходил отчёт о том какая цифра где включена и когда получена следующая. Суть ясна или описать боооооолее подробнее? Уважаемые мне нужна ваша помощь в кратчайшие сроки.
...повторяюсь связь должна быть через RS-232, желательно с ответами
Аффигеть техническое задание. :)
Зачем подключать 4 панели, если требуется отображать всего 3 цифры? Вам понятно, мы теряемся в догадках.
Про протокол уже задали вопрос.
Rs232 - это 12 вольтовый или uart-ttl? Видимо где то Вы нашли дедушку rs232.
Короче, нарисуйте, как и на какие панели нужно отображать три цифры и с какого интерфейса, SPI или RS232 нужно задавать эти цифры. Атакде о каких кнопках идёт речь? Кнопки клавиатуры с персоналки, кнопки, подключенные к ардуине или ещё какие-то кнопки?
#include <SPI.h> enum { reg = 8 }; void setup() { SPI.begin(); pinMode(reg, OUTPUT); } int hundreds=0, tens=0, ones=0, fnn=0, fn=1, f=0; int delayTime=7; static uint8_t digit[11] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF}; static uint8_t pos[3]= {0xE7,0xEB,0xF3}; unsigned long timer=0, timerPrev=0, thinkingTime=1000; void output(int f) { hundreds=f/100; tens=(f-hundreds*100)/10; ones=f-hundreds*100-tens*10; if (hundreds==0) hundreds=10; if (hundreds==10 && tens==0)tens=10; digitalWrite(reg, LOW); SPI.transfer(digit[hundreds]); SPI.transfer(pos[0]); digitalWrite(reg, HIGH); delay(delayTime); digitalWrite(reg, LOW); SPI.transfer(digit[tens]); SPI.transfer(pos[1]); digitalWrite(reg, HIGH); delay(delayTime); digitalWrite(reg, LOW); SPI.transfer(digit[ones]); SPI.transfer(pos[2]); digitalWrite(reg, HIGH); delay(delayTime); } void loop() { timer=millis(); if(timer-timerPrev>thinkingTime){ //вычисляем элемент последовательности Фибоначчи номер n f=fnn+fn; //элементу номер n-2 присваиваем значение элемента n-1 fnn=fn; //элементу номер n-1 присваиваем значение элемента n fn=f; //запоминаем время timerPrev=timer; //увеличиваем время "раздумий" thinkingTime+=f; //если f дорос до 1000, возвращаем все как было if (f>1000){f=0;fn=1;fnn=0;thinkingTime=1000;} } //выводим число output(f); }Для таких задач есть раздел "Ищу исполнителя". На счёт "дураку понятно", здесь много людей, которые хотят научиться.
Слово 'цифра' это один символ от 0 до 9. Здесь было правильней написать про 4 панели, на каждой своё 3-хзначное число. Если я правильно понял.
Теперь о главном. Предполагаю, что с компа предполагается вводить число и номер панели. Далее кнопками определяется момент, когда число, полученное с компа, нужно отобразить на соответствующей панели. Так?
Да, картинки не отображаются.
ПС Я сам не возьмусь, поскольку у меня нет таких деталек, да и времени. Думаю на форуме есть те, кто это сделает. Я лишь попытался раскрыть тайну ТЗ.
ясно, спасибо, общащусь в этот раздел, Кнопка - определяет момент когда будет нужда засветить следующее число, на картинку нажать, перебросит на ресурс, сюда по какой то причине загрузить не удалось