нужна помощь с кодом
- Войдите на сайт для отправки комментариев
Чт, 24/03/2016 - 15:51
Народ и снова к вам за помощью, имеется скетч написан для сегментного индикатора, но у меня его нет этого индикатора, а есть lcd 1602a, помогите решить проблему с кодом чтоб он работал на Lcd 1602A вот собственно сам скетч
uint8_t buf[8] = { 0 }; // байт с информацией о «нажатой» клавише
void setup()
{
Serial.begin(9600); // Устанавливаем скорость соединения
pinMode(2, OUTPUT); // G
pinMode(3, OUTPUT); // F
pinMode(4, OUTPUT); // E
pinMode(5, OUTPUT); // D
pinMode(6, OUTPUT); // C
pinMode(7, OUTPUT); // B
pinMode(8, OUTPUT); // A
pinMode(9, OUTPUT); // D4
pinMode(10, OUTPUT); // D3
pinMode(11, OUTPUT); // D2
pinMode(12, OUTPUT); // D1
// Так как модуль сегментных индикаторов имеет общий анод, то для того, чтобы
// светился сегмент, вывод Arduino должно быть в высокоимпедансном состоянии
// и наоборот
// Выключаем все сегменты:
digitalWrite(12, HIGH);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
delay(2000); // Пауза, чтобы «клавиатура» успела определиться в системе
}
void loop()
{
int dig1, dig2, dig3, dig4; // Цифры, которые будут последовательно вводиться
int keys[10] = { 39, 30, 31, 32, 33,
34, 35, 36, 37, 38 }; // Массив с ASCII кодами цифер от 0 до 9 соответственно
// Перебор с 0000 до 9999:
for(dig1=0; dig1<10; dig1++)
{
for(dig2=0; dig2<10; dig2++)
{
for(dig3=0; dig3<10; dig3++)
{
for(dig4=0; dig4<10; dig4++)
{
pressKey(keys[dig1]);
pressKey(keys[dig2]);
pressKey(keys[dig3]);
pressKey(keys[dig4]);
pressKey(40); // Клавиша Enter
// Текущий пароль будет отображаться в течение примерно 15-ти секунд (чуть больше времени задержки ввода)
for(int i=0; i<1200; i++)
{
digLED(12, dig1);
digLED(11, dig2);
digLED(10, dig3);
digLED(9, dig4);
}
}
}
}
}
}
void pressKey(int dig) // Функция ввода
{
buf[2] = dig;
Serial.write(buf, 8); // Нажать клавишу
buf[0] = 0;
buf[2] = 0;
delay(20);
Serial.write(buf, 8); // Отпустить клавишу
delay(300);
}
// Возможно, существуют библиотеки для сегментных индикторов, но мне не захотелось с ними разбираться,
// поэтому набросал свой алгоритм обхода сегментов индикатора
void digLED(int pin, int dig) // Функция отображения цифер на индикаторе
{
digitalWrite(pin, LOW);
switch(dig)
{
case 0:
digitalWrite(8, LOW);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(2, HIGH);
break;
case 1:
digitalWrite(8, HIGH);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
break;
case 2:
digitalWrite(8, LOW);
digitalWrite(7, LOW);
digitalWrite(6, HIGH);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(3, HIGH);
digitalWrite(2, LOW);
break;
case 3:
digitalWrite(8, LOW);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(3, HIGH);
digitalWrite(2, LOW);
break;
case 4:
digitalWrite(8, HIGH);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
break;
case 5:
digitalWrite(8, LOW);
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
break;
case 6:
digitalWrite(8, LOW);
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
break;
case 7:
digitalWrite(8, LOW);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, HIGH);
digitalWrite(4, HIGH);
digitalWrite(3, HIGH);
digitalWrite(2, HIGH);
break;
case 8:
digitalWrite(8, LOW);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
break;
case 9:
digitalWrite(8, LOW);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
digitalWrite(2, LOW);
break;
}
delay(3);
digitalWrite(pin, HIGH);
}
#include <LiquidCrystal.h> LiquidCrystal lcd(7, 8, 9, 10, 11 , 12); void setup() { lcd.begin(16, 2); lcd.setCursor(0, 0); lcd.print("Test"); } void loop() { }Клапауций 322 чтото не работает (
Клапауций 322 чтото не работает (
подожди - сейчас я тебя прикую к батарее, а сам полезу в инеты читать https://www.arduino.cc/en/Tutorial/HelloWorld и всё заработает.
боже откуда столько агрессии ? Я просто спросил помощи !!!
боже откуда столько агрессии ? Я просто спросил помощи !!!
не дёргайся - всё будет работать.
Клапауций 322 проходи лесом милый человек!!!
Клапауций 322 проходи лесом милый человек!!!
Зря Вы так, он дело говорит. Экран к Ардуино подключили?
Sindbad Экран работает, просто не могу понять почему перебор цифр не идет(
почему зря ? я знаю что я полный ноль в программировании, но говорить мне иди гугли !! как послать куда то( я задал вопрос на профильном форуме, и хочу помощи а не вали отсюда ищи сам!!
komaxa, Вам дали пример использования индикатора 1602. Это это не Ваша програма (скетч), это кусочек програмы отвечающий за связь с индикатором.
Как и везде, на этом форуме есть свои традиционные правила. В этом разделе оказывается помощь на уровне небходимом человеку который програмирует сам, Вы её уже получили, безвозмездно.
Если Вам надо чтобы Вам поправили програмиу без вашего участия, с такими задачами здесь принято обращаться в раздел "ищу исполнителя" за возмездной помощью.
Вы далеко не первый, кто хочет безвозмездно получить услуги програмиста, такое происходит почти ежедневно но здесь такое не принято, и часто вызывает резкую реакцию. Хотя, может случайно кто и поможет.
Отчего не помочь, вот ткнул пальцен наугад.
http://lesson.iarduino.ru/page/urok-5-vyvodim-pokazaniya-potenciometra-n...
komaxa попробуйте, если и это не пойдёт, тогда к шаману. На этот дисплей столько инфы и примеров, что ...
Sindbad Экран работает, просто не могу понять почему перебор цифр не идет(
Подозреваю, что экран еще не подключен. У контроллера экрана шестнадцать выводов, из них шесть нужны для передачи информации. То, что Вы не написали, какие сигнальные выводы экрана к каким выводам Ардуины подключены, наводит на мысль, что с подключением экрана не все гладко.
почему зря ? я знаю что я полный ноль в программировании, но говорить мне иди гугли !! как послать куда то( я задал вопрос на профильном форуме, и хочу помощи а не вали отсюда ищи сам!!
Во-первых Вас послали не в гугл, а дали ссылку на статью для новичков. Цинизм ссылки в том, что статья на английском. Ну так это специфика профильлных форумов, как и хотели.
Вот подробная статья на русскоязычном ресурсе: http://wiki.amperka.ru/%D1%81%D1%85%D0%B5%D0%BC%D1%8B-%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D1%8F:%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D1%82%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE-%D1%8D%D0%BA%D1%80%D0%B0%D0%BD%D0%B0
Цинизм ссылки в том, что статья на английском.
это не цинизм, а фашизм, русофобия и практическая бендеровщина - русскоязычные россияне должны страдать от языка их потенциального термоядерного противника.
Цинизм ссылки в том, что статья на английском.
это не цинизм, а фашизм, русофобия и практическая бендеровщина - русскоязычные россияне должны страдать от языка их потенциального термоядерного противника.
Слишком мягко. Надо так: ....должны уметь говорить на языке будущих оккупантов, либо сдохнуть.
должны уметь говорить на языке будущих оккупантов, либо сдохнуть.
тогда - на китайском.
Нельзя просто так взять и не любить Китай.
какие то худые они на рисе одном...
какие то худые они на рисе одном...
придут в Сибирь - тогда отожрутся русскими(?) пельменями, будут как среднестатистическая российская красавица выглядеть - пенёк на ножках.
Нельзя просто так взять и не любить Китай.
какие то худые они на рисе одном...
Да ладно. Чисто красотка! Только вот глаза не веселые. Видать, и житуха у нее в хунвейбинии не ахти...