Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.01.2013, 11:40   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Пример простой HTML кнопки

Многие пользователи часто спрашивают как сделать кнопку что бы она могла посылать код в порт Arduino
Привожу пример на три лампочки без CSS рюшечек

Этот код нужно скопировать и поместить в фаил с именем index.html
Код:
<!DOCTYPE HTML>
<html lang="en-US">

<head>
	<meta charset="UTF-8">
	<title>Button</title>
</head>

<body>
   <form method="get" action="serial.php"><button value="1" type="submit" name="send_m">Light ON </button></form>
   <form method="get" action="serial.php"><button value="0" type="submit" name="send_m">Light OFF</button></form>

   <form method="get" action="serial.php"><button value="3" type="submit" name="send_m">Room ON </button></form>
   <form method="get" action="serial.php"><button value="2" type="submit" name="send_m">Room OFF</button></form>

   <form method="get" action="serial.php"><button value="5" type="submit" name="send_m">ON </button></form>
   <form method="get" action="serial.php"><button value="4" type="submit" name="send_m">OFF</button></form>
</body>
</html>
PHP скрипт который принимает отправленное кнопкой значение и отправляет это значение в порт Arduino
Нужно создать фаил с именем serial.php
и поместить в него ниже выложенный код
PHP код:
<?php

$bufer 
'';
$ch=' ';
$filename "/dev/ttyUSB0";      //порт
$fp fopen($filename"r+");  //открыть порт

if ($fp//если порт открыт
{
 
fwrite($fp$_GET['send_m']);  //полать в порт строку

   
while ($ch != chr(0xA)) 
   {
     
$ch fgetc($fp); //прочитать один символ из порта
     
$bufer.=$ch;
   }    
    echo 
"<br>".$bufer

fclose($fp); //закрыть порт
} else echo "Не удалось открыть порт" ;
      
?>
Код для Arduino
Код:
#define ledPin 13  
#define ledPin1 12
#define ledPin2 11
void setup()  
{   
  Serial.begin(57600);   
  pinMode(ledPin, OUTPUT); 
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
}  

void loop()  
{  
  if (Serial.available() > 0)  
  {  
    byte inByte = Serial.read();  
    switch (inByte)  
    {  
        case 49:  
        digitalWrite(ledPin, HIGH);
        delay(50);  
        Serial.println("Light ON");  
        break;  
        
        case 48:  
        digitalWrite(ledPin, LOW); 
        delay(50); 
        Serial.println("Light OFF");  
        break;  
        
        case 51:  
        digitalWrite(ledPin1, HIGH); 
        delay(50); 
        Serial.println("Room ON");  
        break; 
        
        case 50:  
        digitalWrite(ledPin1, LOW); 
        delay(50); 
        Serial.println("Room OFF");  
        break; 

        case 53:  
        digitalWrite(ledPin2, HIGH); 
        delay(52); 
        Serial.println("ON");  
        break;     

        case 52:  
        digitalWrite(ledPin2, LOW); 
        delay(52); 
        Serial.println("OFF");  
        break;     
    }          
  }  
}
Исходники кнопки с обратной связью
Admin вне форума   Ответить с цитированием
Старый 20.01.2013, 12:04   #2
metaforos
Member
 
Регистрация: 17.03.2012
Адрес: Мариуполь (UA)
Сообщений: 72
Вес репутации: 0
metaforos is on a distinguished road
По умолчанию

Chip, конечно этот код более правильный и красивый. Но и мой тоже умеет отправлять данные в Ардуинку. И получать тоже. А вот принимать и получать одновременно...
metaforos вне форума   Ответить с цитированием
Старый 20.01.2013, 12:07   #3
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Добавил код который отправляет и принимает

Если кому нибудь понадобится, могу выложить кнопки на CSS
Выглядеть будут как на скриншоте
Название: buttons.jpg
Просмотров: 8688

Размер: 16.1 Кб
Admin вне форума   Ответить с цитированием
Старый 14.01.2014, 14:22   #4
MIKI
Senior Member
 
Регистрация: 21.06.2013
Адрес: Москва
Сообщений: 176
Вес репутации: 0
MIKI is a jewel in the roughMIKI is a jewel in the roughMIKI is a jewel in the rough
По умолчанию Re: Пример простой HTML кнопки

Цитата:
Сообщение от Admin Посмотреть сообщение
Добавил код который отправляет и принимает

Если кому нибудь понадобится, могу выложить кнопки на CSS
Выглядеть будут как на скриншоте
Вложение 745
Может кто поподробней расписать про три кнопки,что установить в какую папку PHP serial запихнуть.Спасибо!
MIKI вне форума   Ответить с цитированием
Старый 08.09.2014, 17:39   #5
goga7615
Member
 
Регистрация: 03.02.2013
Сообщений: 34
Вес репутации: 0
goga7615 is an unknown quantity at this point
По умолчанию Re: Пример простой HTML кнопки

Добрый день, пробую кнопку с обратной связью из 21 сообщения, но браузер выдает вот такое сообщение:
ON
Warning: Cannot modify header information - headers already sent by (output started at /www/button/serial.php:17) in /www/button/serial.php on line 23

Я так понимаю проблема в этих сроках:
17- echo "<br>".$bufer;
23- header('Location:/button/index.php?var='.$bufer);

Если я правильно понял переменной var не может быть присвоено состояние ON, но почему не понимаю.

Последний раз редактировалось goga7615; 08.09.2014 в 18:13.
goga7615 вне форума   Ответить с цитированием
Старый 20.01.2013, 19:58   #6
metaforos
Member
 
Регистрация: 17.03.2012
Адрес: Мариуполь (UA)
Сообщений: 72
Вес репутации: 0
metaforos is on a distinguished road
По умолчанию

Chip, я хочу реализовать следующее - одна кнопка на включение и выключение. Т.е. при нажатии, PHP отправляет в ардуину "1". Соответственно меняется состояние пина с 0 на 1 и ардуина возвращает состояние пина в PHP, который в свою очередь меняет состояние (отображение) кнопки. Это для того, чтобы открыв страницу своего дома, я сразу видел, что включено, а что нет. Я реализовывал подобное, но использовал NySQL, а сейчас хочу напрямую состояние пинов ардуины читать.
metaforos вне форума   Ответить с цитированием
Старый 20.01.2013, 20:06   #7
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Код проверил? Я выложил то что ты хотел
Admin вне форума   Ответить с цитированием
Старый 20.01.2013, 20:27   #8
metaforos
Member
 
Регистрация: 17.03.2012
Адрес: Мариуполь (UA)
Сообщений: 72
Вес репутации: 0
metaforos is on a distinguished road
По умолчанию

Только увидел. Попробую.
metaforos вне форума   Ответить с цитированием
Старый 20.01.2013, 21:10   #9
NEXT
Member
 
Регистрация: 23.11.2012
Сообщений: 47
Вес репутации: 184
NEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud ofNEXT has much to be proud of
По умолчанию

Мой вариант кнопки, кнопка одна.
нажимаем -включаем, нажимаем выключаем
кнопка меняет цвет.
Обратной связи не делал, пока нет необходимости.
Если кто сделает , просьба поделиться.
PHP код:
<?PHP
     
    
if (isset($_GET['action'])) {
        require(
"php_serial.class.php");
        
$serial = new phpSerial();    
        
$serial->deviceSet("/dev/ttyATH0");    
        
$serial->confBaudRate(9600); //Baud rate: 9600
        
$serial->confParity("none");  //Parity (this is the "N" in "8-N-1")
        
$serial->confCharacterLength(8); //Character length     (this is the "8" in "8-N-1")
        
$serial->confStopBits(1);  //Stop bits (this is the "1" in "8-N-1")
        
$serial->confFlowControl("none");
        
$serial->deviceOpen();
       
        
$command "SW_undefined";
        
//$caption = "Undefined command";
{
            if (
$_GET['action'] == "SW_1")
        {
            
$serial->sendMessage("m\r");
            
$command "SW_1_1";
            
$image 'onoff.png';
        }
        else
         {
            
$serial->sendMessage("n\r");
            
$command "SW_1";
            
$image 'onoffred.png';          
        }
}
    
$serial->deviceClose();
   }
      echo 
'<a href="/index.php?action=' $command .'"><button><img src="' $image '" /></button></a>';

?>
остальное в архиве, распаковываем и пробуем.
Вложения
Тип файла: rar knopkaPHP.rar (20.2 Кб, 871 просмотров)

Последний раз редактировалось NEXT; 20.01.2013 в 21:15.
NEXT вне форума   Ответить с цитированием
Старый 20.01.2013, 23:04   #10
metaforos
Member
 
Регистрация: 17.03.2012
Адрес: Мариуполь (UA)
Сообщений: 72
Вес репутации: 0
metaforos is on a distinguished road
По умолчанию

Chip, ну это близко к истинне. Но вот эти "On", "Off" и т.д., должны отображаться на главной странице с кнопками. Пытался их передавать через GET - не получается. Через Cooki - получается, но через попу... И при первом входе на страницу, естественно ничего не отображается (что включено, а что нет). Еще так более-менее получается -
PHP код:
header('Location: index1.php?var='.$bufer); 
- но данные отображаются в адресной строке...
metaforos вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 03:22. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика