Помогите с кодом ардуино
Спасибо, что увидели мой пост.
Я пытаюсь написать код, позволяющий попеременно отображать букву "А" в строке 1 и строке 0 на ЖК-дисплее. начиная с (0,1), затем (1,0), затем (2,1), затем (3,0) и т. д.. когда он достигает последней точки, он становится «B» и отскакивает в другую сторону, пока не достигнет начальной точки, когда он снова становится «A», и повторяется снова..
Я написал этот код, но застрял в конце, я не знаю, как вернуть его обратно:
// подключаем код библиотеки:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // инициализируем библиотеку номерами выводов интерфейса
int x = 0;
int y = 1;
void setup()
{
lcd.begin(16, 2);
lcd.clear();
}
void loop()
{
{
{
while (x < 15)
{
lcd.setCursor(x, y);
lcd.print("A");
delay(250);
lcd.clear();
x = x + 1;
lcd.setCursor(x, y - 1);
lcd.print("A");
delay(250);
lcd.clear();
x + x++;
}
}
{
while (x = 15)
lcd.setCursor(15, 0);
lcd.print("B");
delay(2000);
x--;
}
}
}
@Sam Abdul, 👍1
Обсуждение1 ответ
Мне кажется, что у вас нет знаний о C/C++. (могу ошибаться. ;-) )
Если вы планируете делать больше проектов по программированию, я советую вам изучить основы этого языка программирования, прежде чем приступать к проектам. Было бы трудно думать об алгоритме, если вы не знаете инструментов для его реализации.
На тот случай, если вам это понадобится только один раз (скажем, для арт-проекта [или домашнего задания ;-)] ), я добавлю пример кода. На данный момент у меня нет возможности протестировать код. Так что написано вслепую и могут быть опечатки. Примерно через 8 часов у меня будет доступ к тестовой настройке, и я поправлю ее, если нужно.
#include <LiquidCrystal.h>
// Здесь вы настраиваете ЖК-дисплей
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// вы инициализируете позицию, в которой следующий символ
// будет отображаться (0,1) (x,y)
int x = 0;
int y = 1;
// настройка выполняется только один раз
void setup()
{
// инициализируем библиотеку lcd для использования с LCD 16x2
lcd.begin(16, 2);
// стираем все символы с дисплея
lcd.clear();
}
// цикл выполняется снова и снова и...
void loop()
{
// двигаться вперед
// пока позиция меньше 15
// вы допускаете x = 0, 1, 2, ..., 15, потому что
// вы увеличиваете два раза на каждом шаге цикла
while (x < 15)
{
lcd.clear( );
lcd.setCursor( x, y );
lcd.print( "A" );
delay( 250 );
// переход к следующей позиции
x = x + 1;
// переключить у
y = toggle( y );
lcd.clear();
lcd.setCursor( x, y );
lcd.print( "A" );
delay( 250 );
// переход к следующей позиции
x = x + 1;
// переключить у
y = toggle( y );
}
// теперь двигаемся назад
// x по-прежнему 15, и вы хотите вернуться назад, пока x == 0
while ( x > 0 )
{
lcd.clear( );
lcd.setCursor( x, y );
lcd.print( "B" );
delay( 250 );
// переход к следующей позиции
x = x - 1;
// переключить у
y = toggle( y );
lcd.clear( );
lcd.setCursor( x, y );
lcd.print( "B" );
delay( 250 );
// переход к следующей позиции
x = x - 1;
// переключить у
y = toggle( y);
}
}
// это подпрограмма, которая переключает y = 0 <-> 1
int toggle( int yval )
{
// Я использую тернарный оператор
// если y == 1, я возвращаю 0 и 1 иначе
return ( yval == 1) ? 0 : 1;
}
- Печать string and integer LCD
- Почему мои часы реального времени показывают неверное время с моего ПК?
- Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
- Отправьте несколько значений int из Python в Arduino, используя pySerial
- Глобальные переменные занимают много места в динамической памяти.
- (Код ультразвукового датчика: такого файла или каталога нет)
- rfid_default_keys проверить с помощью RC522
- Команда strtok() с Serial связью
Научитесь использовать цикл for. Это намного проще. И не путайте присваивание (
=
) с операторами сравнения (==
)., @Majenko