Всем привет!
Не смотря на все мои 34 года во мне живёт большой ребёнок иногда немножко сентиментальный и весь такой романтический. Ну и как любой ребёнок ещё люблю чего-нибудь творить, главное чтобы это чего-нибудь было не сложным, быстро воспроизводимым и дающим видимый глазу результат.
Ребёнок этот живёт в Питере, городе в котором погоды обычно стоят европейские. Т.е. в середине декабря вполне себе за окном можно увидеть подобную картину:
Правда пока я собирался с мыслями в предновогодней суете — всё немножко изменилось…
Но, не смотря на это, не могу не поделиться мыслью куда ещё можно засунуть закупленные на ebay и бесцельно валяющиеся ардуины. Тем более страна у нас большая и снега на всю не хватает :)
В общем сидел я, скучал по отсутствию снега за окном, а руки чесались чего-нибудь состряпать. Отсюда и родилась мысль собрать из говна и палок Arduino Nano, LCD экрана 16x2 и I2C-адаптера к нему вот такую развлекушку:
Приводить схемы подключения нарисованные во Fritzing не буду — кто с ардуиной знаком и так всё поймёт, а кто нет — дак тому полезно по-гуглить да по-яндексить. Но скетчем естественно поделюсь. За него прошу не пинать, ибо образования у меня сплошь гуманитарные.
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // внешняя библиотека LCD по I2C
LiquidCrystal_I2C lcd(0x27,16,2); // адрес экрана 0x27, символов 16, строк 2
int s1; // позиция снежинки №1
int s2;
int s3;
int s4;
int s5;
int s6;
int s7;
int t; // время задержки
void setup()
{
lcd.init(); // инициализируем экран
lcd.backlight(); // программно включаем фоновую подсветку
lcd.clear(); // чистим экран
Serial.begin(9600);
t = 600; // устанавливаем время задержки
}
void loop()
{
//----------Работаем с первой строкой LCD----------
s1 = random(3);
s2 = s1 + random(2,5);
s3 = s2 + random(2,5);
s4 = s3 + random(2,5);
s5 = s4 + random(2,5);
s6 = s5 + random(2,5);
s7 = s6 + random(2,5);
lcd.setCursor(0, 0);
lcd.print(" "); //затираем строку пробелами
lcd.setCursor(s1, 0);
lcd.write('*');
lcd.setCursor(s2, 0);
lcd.write('*');
lcd.setCursor(s3, 0);
lcd.write('*');
lcd.setCursor(s4, 0);
lcd.write('*');
lcd.setCursor(s5, 0);
lcd.write('*');
lcd.setCursor(s6, 0);
lcd.write('*');
lcd.setCursor(s7, 0);
lcd.write('*');
Serial.print (s1);
Serial.print (" ");
Serial.print (s2);
Serial.print (" ");
Serial.print (s3);
Serial.print (" ");
Serial.print (s4);
Serial.print (" ");
Serial.print (s5);
Serial.print (" ");
Serial.print (s6);
Serial.print (" ");
Serial.print (s7);
Serial.println ();
delay (t);
//----------Работаем со второй строкой LCD----------
lcd.setCursor(0, 1);
lcd.print(" "); //затираем строку пробелами
lcd.setCursor(s1 + random (-1, 2), 1);
lcd.write('*');
lcd.setCursor(s2 + random (-1, 2), 1);
lcd.write('*');
lcd.setCursor(s3 + random (-1, 2), 1);
lcd.write('*');
lcd.setCursor(s4 + random (-1, 2), 1);
lcd.write('*');
lcd.setCursor(s5 + random (-1, 2), 1);
lcd.write('*');
lcd.setCursor(s6 + random (-1, 2), 1);
lcd.write('*');
lcd.setCursor(s7 + random (-1, 2), 1);
lcd.write('*');
delay (t);
}
К сожалению экранчики у меня в наличии только двухстрочные. :( На четырёхстрочном, я думаю, выглядеть будет гораздо интересней (код нужно будет немножко дописать). Кстати, если у вас такие есть — выкладывайте видео в комментариях. Ну и если кто код может сделать более красивым, тоже буду рад видеть в комментариях ;).
Библиотеку для экрана берём отсюда, тк с вашей может и не заработать (испробовано на кошках).
И напоследок видео:
ЗЫ в комментариях можно покидаться помидорами или попросить написать о том, что связывает новогодние каникулы, телевизор в гостиной, Raspberry Pi и геймпад от xBox. А так же рождественские морозы и вот такая убер-хрень. Ну и про очередную Wheather Station с блэ сетевым интерфейсом и конечно экранчиком то же могу поведать. Всем спасибо за внимание и С Новым годом!
Автор: makaroff