рдЬрд▓реНрджреА рдШрд░ рд╕реНрдорд╛рд░реНрдЯ рдШрд░

рд╣рдо рдорд╛рд╕реНрдЯрд░ рдХрд┐рдЯ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдорд╛рдзрд╛рди рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ :
"рдПрдХ рдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдЬрд▓реНрджреА рдФрд░ рдХрдо рд╕реЗ рдХрдо рд▓рд╛рдЧрдд рдореЗрдВ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛" рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдо "рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реЛрдЯрд▓ рд╡реНрдпрд╡рд╕рд╛рдпреА рдереЗ: рдмрд┐рдЬрд▓реА рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд╢, рд╡реЗрдВрдЯрд┐рд▓реЗрд╢рди, рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ, рдкрд╛рдиреА рдФрд░ рдЖрдИрдЖрд░ рдирд┐рдпрдВрддреНрд░рдгред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдиреНрдпреВрдирддрдо рдХрд╛рд░реНрдпреЛрдВ рддрдХ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛: рдХрдорд░реЗ рдореЗрдВ рд╡реЗрдВрдЯрд┐рд▓реЗрд╢рди рдФрд░ рдкреНрд░рдХрд╛рд╢ рд╡реНрдпрд╡рд╕реНрдерд╛ред



рдкреНрд░рдгрд╛рд▓реА Arduino Uno рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдереА, рдЬрд┐рд╕рдореЗрдВ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЪрд╛рд░ рдкрд┐рдиреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдереА, рдФрд░ рдорд╛рд╕реНрдЯрд░ рдХрд┐рдЯ рд╕реЗ рдХрдИ рд╡рд╛рдпрд░рд▓реЗрд╕ рдирд┐рдпрдВрддреНрд░рдг рдореЙрдбреНрдпреВрд▓: рдПрдХрд▓-рдЪреИрдирд▓ рдФрд░ рджреЛ-рдЪреИрдирд▓ MP3328 рдФрд░ MP3330 рд░рд┐рд▓реЗ рдХрд╛рд░реНрдпрдХрд╛рд░реА рдЙрдкрдХрд░рдгреЛрдВ рдХреА рднреВрдорд┐рдХрд╛ рдкрд░ рдереЗ , рдФрд░ рд╕рд┐рдЧреНрдирд▓ рдПрдХ рдЖрда-рдЪреИрдирд▓ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред 433 рдореЗрдЧрд╛рд╣рд░реНрдЯреНрдЬ рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ MP3329 ред





MP3330 рдкрд░ рдореИрдВрдиреЗ рд╕реЛрдлреЗ рдкрд░ рджреЛ рдПрд▓рдИрдбреА рд╕реНрдЯреНрд░рд┐рдкреНрд╕ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рд▓рдЯрдХрд╛ рджрд┐рдпрд╛, - рд╢рд╛рдо рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд░рд╛рдорджрд╛рдпрдХ рдмреИрдХрд▓рд╛рдЗрдЯ, - рдФрд░ рдПрдордкреА 3328 рдкрд░ - рдЦрд┐рдбрд╝рдХреА рдЦреЛрд▓рдиреЗ / рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░реНрд╡реЛ-рдорд╢реАрди рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг ред

рдореИрдВрдиреЗ рддрд╛рддреНрдХрд╛рд▓рд┐рдХ рд╕рд╛рдордЧреНрд░реА рд╕реЗ рд▓реЗрдЧреЛ рдбрд┐рдЬрд╛рдЗрдирд░ рдХреЗ рд╣рд┐рд╕реНрд╕реЛрдВ рд╕реЗ рдбреНрд░рд╛рдЗрд╡ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ред



рдЦреИрд░, рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдореЗрд░реЗ рд▓рд┐рдП рд╕рд░рд▓ рд░реЗрдбрд┐рдпреЛ рдирд┐рдпрдВрддреНрд░рдг рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛: рдореБрдЭреЗ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╕реНрдерд┐рддрд┐ рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рдПрдХ рднрдВрдбрд╛рд░рдг рд╕рдВрд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВрдиреЗ рдорд╛рдирдХ MySQL рд▓рд┐рдпрд╛, рдЬрд╣рд╛рдВ рдореИрдВрдиреЗ рд╕реБрд░рдХреНрд╖рд╛ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХреЛрдВ, рдкрд┐рдиреЛрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд╕реНрдерд┐рддрд┐ рдореВрд▓реНрдп рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдИ, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рд╕реНрдЯрдо рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдмрд╛рдВрдзрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рд░рд╛рдЬреНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЯрд╛рдЗрдорд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд╣рд╛рд░реНрдб-рд╡рд╛рдпрд░реНрдб рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реАрд▓реНрдб рднреА рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рдЬрдм рд╡реЗрдм рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдереЗ, рддреЛ рдЕрд░реНрдбреБрдЗрдиреЛ рдереЛрдбрд╝рд╛ рдЫреЛрдЯрд╛ рдерд╛, рдФрд░ рдХрд╛рд░рдгреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛, рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рд╕реНрдХреЗрдЪ рдХрд┐рдпрд╛: рдПрдЬрд╛рдХреНрд╕ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рд╣рд░ 100msред рдпрд╣, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╛рддрд╛рдпрд╛рдд рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рд╣реИ (рд▓рдЧрднрдЧ 30 рдПрдордмреА рдкреНрд░рддрд┐ рджрд┐рди), рд▓реЗрдХрд┐рди рдкрд╣рд▓реА рдмрд╛рд░ рдЕрд╕реАрдорд┐рдд рдЗрдВрдЯрд░рдиреЗрдЯ рд╡рд╛рд▓реЗ рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕: 4 рдмрдЯрди, рдкреНрд░рддреНрдпреЗрдХ рдкрд┐рди рдХреЗ рд▓рд┐рдП рдПрдХред рдПрдХ рдПрдХрд▓ рдкреНрд░реЗрд╕ рд░рд╛рдЬреНрдп рдХреЛ рдмрджрд▓рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рд▓рдВрдмрд╛ рдкреНрд░реЗрд╕ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд░ (рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдм рддрдХ 3 рдорд┐рдирдЯ рдХрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдЕрд░ рд╣реИ) рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред



рдирддреАрдЬрддрди, рддрд░реНрдХ рдХрд╛ рд╕рд░рд▓реАрдХреГрдд рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ рдФрд░ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ: рд╕рдВрдмрдВрдзрд┐рдд рд░рд╛рдЬреНрдп рдореЗрдВ 4 рдмрдЯрди:

рд╕реНрдХреНрд░рд┐рдкреНрдЯ
$.ajax({
			url: 'engine/ajax.php',
			type: 'POST',
			dataType: 'json',
			data: {action: 'getStates'},
		})
		.done(function(data) {
			for (key in data.success){
				var controller = data.success[key];
				if($('.btn#btn_' + controller.id).length === 0){
					html = '';
					html += '<div ';
					if (controller.timer_switch > 0){
						var seconds = 60  - (controller.timer_switch % 60)
						html += 'seconds="' + seconds + '"';
					}
					html += 'id="btn_' + controller.id + '" class="btn" state="' + controller.state + '"><div class="btn_timer"></div></div>';
					$('#btn_placer').append(html);
				} else {
					if (controller.state == 1){
						$('.btn#btn_' + controller.id).removeClass('btn_off').addClass('btn_on');
					} else if (controller.state == 0){
						$('.btn#btn_' + controller.id).removeClass('btn_on').addClass('btn_off');
					}
					if (controller.timer_switch > 0){
						var seconds = 60 - controller.timer_switch % 60;
						var minutes = Math.floor(controller.timer_switch / 60);
						$('.btn#btn_' + controller.id).addClass('seconds').css('background-position', (-seconds * 100) + 'px 0px').find('.btn_timer').text(minutes + 'M');
					} else {
						$('.btn#btn_' + controller.id).css('background-position', '0px 0px').removeClass('seconds').find('.btn_timer').text('');
					}
				}
			}
			setTimeout(function(){
				getStates();
			}, 1000);
		})
		.fail(function(data) {
			console.log('error');
		});



function getStates($sql){
	$result = $sql->query("SELECT * FROM `controllers` WHERE `home_id` = '1' ORDER BY `order`");
	if (isset($result->rows)){
		$result = $result->rows;
		foreach ($result as $key => $value) {
			if (strtotime($result[$key]['timer']) > -62169990000){
				// echo strtotime($result[$key]['timer']);
				$timer_switch = strtotime($result[$key]['timer']) - strtotime(date("Y-m-d H:i:s"));
				$result[$key]['timer_switch'] = $timer_switch;
				if ($timer_switch < 0){
					$sql->query("UPDATE `controllers` SET `state` = '".$result[$key]['timer_state']."', `timer` = '0000-00-00 00:00:00', `timer_state` = '' WHERE `id` = '".$result[$key]['id']."'");
				}
			}
		}
		$res['success'] = $result;
	} else {
		$res['error'] = ' ';
	}
	return $res;
}




рдЬрдм рд╕рдВрдмрдВрдзрд┐рдд рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ ajax.php рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ POST рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ
$(document).on('mousedown', '.btn', function(event){
			event.preventDefault();
			var id = parseInt($(this).attr('id').replace('btn_', ''));
			click_wait = false;
			mousetimer = setTimeout(function(){
				click_wait = true;
				setTimer(id);	
			}, 2000);
		});

		$(document).on('mouseup', '.btn', function(){
			clearTimeout(mousetimer);
			if (!click_wait){
				var id = parseInt($(this).attr('id').replace('btn_', ''));
				switchController(id);
				console.log('click !!!');
				click_wait = false;
			}
		});
	function switchController(id){
		var el = $('.btn#btn_' + id);
		var state = parseInt($(el).attr('state'));
		var need_state;
		if (state == 0){
			need_state = 1;
		} else if (state == 1){
			need_state = 0;
		}
		$(el).addClass('waiting');
		$.ajax({
			url: 'engine/ajax.php',
			type: 'POST',
			dataType: 'json',
			data: {action: 'setState', id: id, state: state, need_state: need_state},
		})
		.done(function(data) {
			if (data.success == 'ok'){
				$(el).attr('state', need_state);
				$(el).removeClass('waiting').removeClass('btn_on').removeClass('btn_off');
				if(need_state == 1){
					$(el).addClass('btn_on');
				} else if(need_state == 0){
					$(el).addClass('btn_off');
				}
			}
		})
		.fail(function(data) {
			console.log('error');
		});
	}
	function setTimer(id){
		var el = $('.btn#btn_' + id);
		var state = parseInt($(el).attr('state'));
		var need_state;
		if (state == 0){
			need_state = 1;
		} else if (state == 1){
			need_state = 0;
		}
		$(el).attr('seconds', 0);
		$(el).addClass('seconds');
		$.ajax({
			url: 'engine/ajax.php',
			type: 'POST',
			dataType: 'json',
			data: {action: 'setTimer', id: id, state: state, need_state: need_state},
		})
		.done(function(data) {
		})
		.fail(function(data) {
			console.log('error');
		});
	}




рдЪрд░ рдЖрдИрдбреА рдореЗрдВ, рд╣рдо рдирд┐рдпрдВрддреНрд░рдХ рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛, рдФрд░ рдЪрд░ рд░рд╛рдЬреНрдп рдореЗрдВ, рдЗрд╕рдХреЗ рд░рд╛рдЬреНрдп рдХрд╛ рдорд╛рди рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред Ajax.php рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рд╣рдореЗрдВ рдПрдХ POST рдЕрдиреБрд░реЛрдз рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдирдП рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдЖрдИрдбреА рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред

Php
function setState($sql){
	$need_state = (int)$_POST['need_state'];
	$state = (int)$_POST['state'];
	$id = (int)$_POST['id'];

	$result = $sql->query("UPDATE `controllers` SET `state` = '".$need_state."', `timer` = '0000-00-00 00:00:00' WHERE `id` = '".$id."'");
	//   Arduino
	$result = $sql->query("SELECT `state` FROM `controllers` WHERE `id` = '".$id."'");
	if ($need_state == $result->row['state']){
		$res['success'] = 'ok';
	} else {
		$res['success'] = 'err';
	}
	return $res;
}

function setTimer($sql){
	$need_state = (int)$_POST['need_state'];
	$state = (int)$_POST['state'];
	$id = (int)$_POST['id'];

	$result = $sql->query("UPDATE `controllers` SET `timer` = NOW() + INTERVAL 3 MINUTE, `timer_state` = '".$need_state."' WHERE `id` = '".$id."'");
	//   Arduino
	$result = $sql->query("SELECT `state` FROM `controllers` WHERE `id` = '".$id."'");
	if ($need_state == $result->row['state']){
		$res['success'] = 'ok';
	} else {
		$res['success'] = 'err';
	}
	return $res;
}




Arduino, рдмрджрд▓реЗ рдореЗрдВ, рдИрдерд░рдиреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рдЕрджреНрд╡рд┐рддреАрдп рд╕рд┐рд╕реНрдЯрдо рдХреБрдВрдЬреА, рдирд┐рдпрдВрддреНрд░рдХ рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рд╛рдкреНрдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд┐рди рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░рддрд╛ рд╣реИред

Php
if (isset($_GET['key']) && $_GET['key'] !== ''){
		$key = $_GET['key'];
	} else {
		die;
	}
	
$key = $sql->escape($key);
	$result = $sql->query("SELECT * FROM `controllers` WHERE `home_id` = '1' AND `key` = '".$key."' ORDER BY `order`");
	foreach ($result->rows as $key => $value) {
		if ($value['id'] == '1'){
			if ($value['state'] == '1'){
				$ar .= 'Q';
			} else if ($value['state'] == '0') {
				$ar .= 'q';
			}
		}
		if ($value['id'] == '2'){
			if ($value['state'] == '1'){
				$ar .= 'W';
			} else if ($value['state'] == '0') {
				$ar .= 'w';
			}
		}
		if ($value['id'] == '3'){
			if ($value['state'] == '1'){
				$ar .= 'E';
			} else if ($value['state'] == '0') {
				$ar .= 'e';
			}
		}
	}




рдЙрд╕рдХреЗ рдмрд╛рдж, рдкреНрд░рдкрддреНрд░ "% qUerTY" рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдПрдХ рд╕реНрдХреЗрдЪ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЗрд╕реЗ рд╣рд╛рд░реНрдб-рд╡рд╛рдпрд░реНрдб рдирд┐рдпрдореЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдкреНрд░рддреНрдпреЗрдХ рдЕрдХреНрд╖рд░ рдЕрдкрдиреЗ рдкрд┐рди рдирдВрдмрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рдФрд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдЕрдВрддрд┐рдо рдореВрд▓реНрдп рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ: рдкреВрдВрдЬреА - 1, рд▓реЛрдЕрд░рдХреЗрд╕ - 0ред

Arduino
void readData(){
  if (led_connect){
    digitalWrite(6, HIGH);
  } else {
    digitalWrite(6, LOW);
  }
  digitalWrite(4, LOW);
  previousMillis = currentMillis;
  
  led_connect = !led_connect;
    while (client.available()){      
      switch (char c = client.read()) {
        case 'Q':
          digitalWrite(9, HIGH);
          break;
        case 'q':
          digitalWrite(9, LOW);
          break;
        case 'W':
          digitalWrite(8, HIGH);
          break;
        case 'w':
          digitalWrite(8, LOW);
          break;
        case 'E':
          digitalWrite(7, HIGH);
          myservo.write(0);
          break;
        case 'e':
          digitalWrite(7, LOW);
          myservo.write(180);
          break;
      }
    }
}



рдЖрдк рд╕рд░реНрд╡реЛ рдорд╢реАрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдкрд┐рди рд╕реЗ 0 рд╕реЗ 180 (рд░реЛрдЯреЗрд╢рди рдХреА рдбрд┐рдЧреНрд░реА) рддрдХ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░, рдбрд┐рдорд░ рддрдХ - рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, 255 рддрдХред рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рджреЛ рдореВрд▓реНрдп рд╣реИрдВ: 0 рдпрд╛ 1.





рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереА: рджреЛрдиреЛрдВ рд░рд┐рд▓реЗ рдХреЛ рдкреБрди: рдмрд╛рдзреНрдпрдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдмрд╛рд░ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрдирд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред





рд▓реЗрдХрд┐рди рд╕рд░реНрд╡реЛ рдорд╢реАрди рдХреА рд╢рдХреНрддрд┐ рдХреЗ рд╕рд╛рде, рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рдЧрд▓рдд рдХрд┐рдпрд╛: рдореИрдВрдиреЗ 6 рдХрд┐рд▓реЛ рд▓рд┐рдпрд╛, - рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдФрд░ рдЦрд┐рдбрд╝рдХреА рдХреЗ рд╕реИрд╢ рдХреЛ рдЬрд╛рдиреЗ рджреЗрдВ, рдХрд┐ рдпрд╣ рдЕрдкрдиреЗ рд╡рдЬрди рдХреЗ рддрд╣рдд рдЦреЛрд▓рд╛ рдЧрдпрд╛, - рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдФрд░ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ, рдкрд░ рддреЗрдЬ рд╣рд╡рд╛ рдпрд╛ рдбреНрд░рд╛рдлреНрдЯ рдХрд╛ рдорд╛рдорд▓рд╛ред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд░рдЪрдирд╛рддреНрдордХрддрд╛ рдХреЗ рд▓рд┐рдП рдЧреБрдВрдЬрд╛рдЗрд╢ рдЕрд╕реАрдорд┐рдд рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд╕реЗрдВрд╕рд░ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, CO2 рдпрд╛ рддрд╛рдкрдорд╛рди, рдФрд░ рдХреБрдЫ рд╕рдВрдХреЗрддрдХ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдкрд░ рд╡рд┐рдВрдбреЛ рдХреЛ рдЦреЛрд▓реЗрдВ / рдмрдВрдж рдХрд░реЗрдВред
рдареАрдХ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВ рд╡реЗрдм рд╕реЙрдХреЗрдЯреНрд╕ рдкрд░ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЬрд┐рд╕рд╕реЗ рдЕрдиреБрд░реЛрдз рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рдФрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рдиреЛрдВ рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдФрд░ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдмрдирд╛ рджреЗрддрд╛ рд╣реИред

Arduino рдХреЗ рд▓рд┐рдП рд╕реНрдХреЗрдЪ

рд▓рдШреБ рд╡реАрдбрд┐рдпреЛ

рдХрд╛рд░реНрдп рдмреИрдХрд▓рд╛рдЗрдЯ


рдЦрд┐рдбрд╝рдХреА рдЦреЛрд▓рдирд╛


рджрд┐рдорд┐рддреНрд░реА рдХреБрдЬрд╝рдиреЗрддреНрд╕реЛрд╡ "

Source: https://habr.com/ru/post/hi383679/


All Articles