Вебморда фактически состоит из двух файлов - скрипт, который зажигает светодиоды в зависимости от аргумента и HTML страница.
При нажатии на кнопку вебморды запускается скрипт с нужным параметром, а при отпускании - скрипт с аргументом 'stop'
Скрипт сделан для роутера TP-Link 3040
Для того чтобы отключить штатные триггеры диодов (на данном роутере) надо выгрузить и обратно загрузить модуль leds-gpio:
rmmod leds-gpio insmod leds-gpio
Для других контроллеров GPIO надо заменить команды :)
вот скрипт /www/cgi-bin/ctrl_led:
а вот вебстраница /www/edem.html:
<!DOCTYPE html>
<html>
<head>
<title>Relay control</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript">
function command(action)
{
url="/cgi-bin/ctrl_led?command="+action;
url=url+"&fuie=" + Math.random();
var xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET",url,false);
xmlhttp.send();
}
function Init () {
var left_button = document.getElementById ("left");
if (left_button.addEventListener) { // all browsers except IE before version 9
left_button.addEventListener ("mousedown", function () {command ('left')}, false);
left_button.addEventListener ("mouseup", function () {command ('stop')}, false);
}
else {
if (left_button.attachEvent) { // IE before version 9
left_button.attachEvent ("onmousedown", function () {command ('left')});
left_button.attachEvent ("onmouseup", function () {command ('stop')});
}
}
var right_button = document.getElementById ("right");
if (right_button.addEventListener) { // all browsers except IE before version 9
right_button.addEventListener ("mousedown", function () {command ('right')}, false);
right_button.addEventListener ("mouseup", function () {command ('stop')}, false);
}
else {
if (right_button.attachEvent) { // IE before version 9
right_button.attachEvent ("onmousedown", function () {command ('right')});
right_button.attachEvent ("onmouseup", function () {command ('stop')});
}
}
var forward_button = document.getElementById ("forward");
if (forward_button.addEventListener) { // all browsers except IE before version 9
forward_button.addEventListener ("mousedown", function () {command ('forward')}, false);
forward_button.addEventListener ("mouseup", function () {command ('stop')}, false);
}
else {
if (forward_button.attachEvent) { // IE before version 9
forward_button.attachEvent ("onmousedown", function () {command ('forward')});
forward_button.attachEvent ("onmouseup", function () {command ('stop')});
}
}
}
</script>
</head>
<body onload="Init()">
<button id="left" type="button">Left</button>
<button id="right" type="button">Right</button>
<button id="forward" type="button">Forward</button>
</body>
</html>
Схема подключения моторов:
http://farm5.static.flickr.com/4026/4321991080_867e7afb5f_o.jpg
Ссылки:
http://habrahabr.ru/post/151982/
http://habrahabr.ru/post/76128/ - тут делают робота на базе атмега… нас интересует схема подключения драйверов мотора L293D