На Arduino можно довольно интересный проект начального уровня — цифровые игральные кости. При помощи которых можно генерировать случайное число от 1 до 6.

Сборка проекта на макетной плате

Сборка проекта на макетной плате

Поместите 6 светодиодов на макетную плату, как показано на рисунке. Они должны располагаться на рейке E с двумя промежутками между каждым светодиодом. Вы должны поместить конец анода (длинный конец) светодиода в первое из двух мест, а конец катода (короткий конец) во второе место. Поместите концы светодиодного анода в ряды 3, 7, 11, 15, 19 и 23.

Поместите кнопку на макетную плату, как показано на рисунке. Левая сторона должна входить в рельс E, места 59 и 61, а правая сторона должна входить в рельс F, места 59 и 61.

Сборка проекта на макетной плате, подключение резисторов

Далее подключаем резистор на 220 Ом к минусовому выводу светодиода. Также к кнопки подключаем вывод в 1 кОм.

Подключение светодиодов к Arduino

Далее подключаем светодиоды к выводам 2,3,4,5,6,7  на Arduino именно в такой последовательности, чтобы светодиоды загорались именно в такой последовательности. А кнопка подключается к выводу 12.

Скетч программ

		#define DEBUG 0
		// 6 consecutive digital pins for the LEDs		
		int first = 2;		
		int second = 3;		
		int third = 4;		
		int fourth = 5;		
		int fifth = 6;		
		int sixth = 7;						
		// pin for the button switch		
		int button = 12;
		
		// value to check state of button switch		
		int pressed = 0;			
		
		void setup() {		
		// set all LED pins to OUTPUT		
		for (int i=first; i<=sixth; i++) {		
		pinMode(i, OUTPUT);		
		}
		
		// set buttin pin to INPUT		
		pinMode(button, INPUT);		
		// initialize random seed by noise from analog pin 0 (should be unconnected)		
		randomSeed(analogRead(0));		
		// if we're debugging, connect to serial
		
		#ifdef DEBUG		
		Serial.begin(9600);		
		#endif		
		}		
		void buildUpTension() {		
		// light LEDs from left to right and back to build up tension		
		// while waiting for the dice to be thrown		
		// left to right		
		for (int i=first; i<=sixth; i++) { if (i!=first) { digitalWrite(i-1, LOW); } digitalWrite(i, HIGH); delay(100); } // right to left for (int i=sixth; i>=first; i--) {		
		if (i!=sixth) {		
		digitalWrite(i+1, LOW);		
		}
		
		digitalWrite(i, HIGH);		
		delay(100);		
		}		
		}			
		void showNumber(int number) {		
		digitalWrite(first, HIGH);		
		if (number >= 2) {		
		digitalWrite(second, HIGH);		
		}		
		if (number >= 3) {		
		digitalWrite(third, HIGH);		
		}		
		if (number >= 4) {		
		digitalWrite(fourth, HIGH);		
		}		
		if (number >= 5) {		
		digitalWrite(fifth, HIGH);		
		}		
		if (number == 6) {		
		digitalWrite(sixth, HIGH);		
		}		
		}
		
		int throwDice() {		
		// get a random number in the range [1,6]		
		int randNumber = random(1,7);		
		#ifdef DEBUG		
		Serial.println(randNumber);		
		#endif		
		return randNumber;		
		}		
		void setAllLEDs(int value) {		
		for (int i=first; i<=sixth; i++) {		
		digitalWrite(i, value);		
		}		
		}		
		void loop() {		
		// if button is pressed - throw the dice		
		pressed = digitalRead(button);		
		if (pressed == HIGH) {		
		// remove previous number		
		setAllLEDs(LOW);		
		buildUpTension();		
		int thrownNumber = throwDice();		
		showNumber(thrownNumber);		
		}		
		}    
Полезные ссылки по проекту
Видео
https://www.youtube.com/watch?v=Rb1OYDqf06s&t=4s

Похожие записи

Цифровые игральные кости на Arduino

На Arduino можно довольно интересный проект начального уровня - цифровые игральные кости. При помощи которых можно генерировать случайное число от 1 до 6. ...

Системы заземления TN-C, TN-S, TNC-S, TT, IT

Системы заземления, используемые для выполнения заземления. Среди критериев, способствующих обеспечению защиты от такого процесса, как поражение электричеством, особого внимания...

Маркировки кабеля европейских производителей

В Европе для маркировки кабеля используются свои стандарты и нормативные документы. Чтобы расшифровать маркировку импортного кабеля, необходимо знать, что обозначает конкретная...

Подключение сервопривода к Arduino

Сервопривод (servo) - устройство с электрическим мотором, которому можно задать определенный угол поворота и зафиксировать в определенном положении. Подключение сервопривода к Arduino очень...

Схема полицейской мигалки на микроконтроллере

Представленная схема полицейской мигалки на микроконтроллере и светодиодах может работать в 16 различных режимах. Режим выбирается при помощи одной кнопки, и собрана на микроконтроллере...

Функция setup() вызывается первой когда запускается скетч. Эта функция необходима для инициализации переменных, настройки режимов работы портов (выводов), для старта каких либо функций...

Только полноправные пользователи могут оставлять комментарии. Войдите , пожалуйста.