Когда хочется снега…

в 13:21, , рубрики: arduino, diy или сделай сам, lcd 1602

Всем привет!
Не смотря на все мои 34 года во мне живёт большой ребёнок иногда немножко сентиментальный и весь такой романтический. Ну и как любой ребёнок ещё люблю чего-нибудь творить, главное чтобы это чего-нибудь было не сложным, быстро воспроизводимым и дающим видимый глазу результат.

Когда хочется снега… - 1

Ребёнок этот живёт в Питере, городе в котором погоды обычно стоят европейские. Т.е. в середине декабря вполне себе за окном можно увидеть подобную картину:

Когда хочется снега… - 2

Правда пока я собирался с мыслями в предновогодней суете — всё немножко изменилось…

Когда хочется снега… - 3

Но, не смотря на это, не могу не поделиться мыслью куда ещё можно засунуть закупленные на ebay и бесцельно валяющиеся ардуины. Тем более страна у нас большая и снега на всю не хватает :)
В общем сидел я, скучал по отсутствию снега за окном, а руки чесались чего-нибудь состряпать. Отсюда и родилась мысль собрать из говна и палок Arduino Nano, LCD экрана 16x2 и I2C-адаптера к нему вот такую развлекушку:

Когда хочется снега… - 4

Приводить схемы подключения нарисованные во 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 с блэ сетевым интерфейсом и конечно экранчиком то же могу поведать. Всем спасибо за внимание и С Новым годом!

Когда хочется снега… - 5

Автор: makaroff

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js