![]() |
|
|
#1 |
|
Member
Регистрация: 27.08.2015
Сообщений: 54
Вес репутации: 0 ![]() ![]() ![]() ![]() ![]() ![]() |
Доброго всем, есть статья про DIR-320 + Freeduino: выводим системную информацию на LCD
Решил применить ее на своем wdr3500 Хоть и на сайтах мало инфы написано но скетч на ардуине смог перенастроить чтоб работало подключение lcd1602 по i2c шине Код:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
void ScreenSaver()
{
int i;
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" >>>Openwrt<<< ");
lcd.setCursor(0,1);
lcd.print(" & Arduino ");
delay(3000);
lcd.clear();
for (i=0;i<8;i++)
{
lcd.setCursor(i,0);
lcd.print("=");
lcd.setCursor(16-i-1,0);
lcd.print("=");
delay(200);
}
lcd.clear();
}
void setup(){
lcd.init();
lcd.backlight();// Включаем подсветку дисплея
// устанавливаем параметры дисплея:
lcd.begin(16, 2);
// инициализируем последовательный порт:
Serial.begin(9600); //здесь не забываем указать скорость вашего порта роутера
}
void loop()
{
char s;
if (Serial.available())
{
delay(100);
while (Serial.available() > 0)
{
s=Serial.read();
if (s=='^') {
switch (Serial.read()) {
case '1':
lcd.setCursor(0,1);
Serial.read();
break;
case '0':
lcd.setCursor(0,0);
Serial.read();
break;
case 'c':
lcd.clear();
Serial.read();
break;
case 's':
Serial.read();
ScreenSaver();
break;
} //switch
}
else {
// Выводим каждый символ на LCD
lcd.write(s);
}
}
}
}
Код:
#!/bin/sh
port="/dev/tts/0"
lcdWrite() {
#Вывод на экран
echo -n "^"${1}:$2 > $port
}
lcdClear() {
#Очистка экрана
echo -n "^c:" > $port
}
lcdScreenSaver() {
#Запуск заставки
echo -n "^s:" > $port
}
WidgetLoad() {
#Отображение загрузки процессора
s=`/usr/bin/uptime`
s2=":"
for i in 1 2 3 4 5 6
do #Удаляем всё лишнее до последнего двоеточия
n=`expr index "$s" "$s2"`
s="${s:$n}"
done
s="${s:1}" #Удаляем первый символ (пробел)
lcdClear
lcdWrite 0 "Load CPU"
lcdWrite 1 "$s"
}
WidgetWiFiClientsCount() {
#Виджет, показывающий количество подключенных WiFi клиентов
s=`wl assoclist | wc -l`
lcdClear
lcdWrite 0 "Wi-Fi Clients"
lcdWrite 1 "$s"
}
WidgetUptime() {
#Аптайм роутера
s=`/usr/bin/uptime`
s2="l"
n=`expr index "$s" "$s2"`
n=`expr $n - 3`
s="${s:0:$n}"
s2="u"
n=`expr index "$s" "$s2"`
n=`expr $n + 2`
s="${s:$n}"
lcdClear
lcdWrite 0 "Uptime"
lcdWrite 1 "$s"
}
WidgetRAM() {
#Свободная память
set `cat /proc/meminfo | grep "Mem:"`
n=`expr $4 + $6 + $7`
p=`expr 100 '*' $n / $2`
n=`expr $n / 1024`
lcdClear
lcdWrite 0 "FreeRAM"
lcdWrite 1 "$n Kb ${p}%"
}
WidgetHDD() {
#Свободное место в /opt
set `df | grep "/opt"`
p=`expr 100 '*' $3 / $1`
n=`expr $3 / 1024`
lcdClear
lcdWrite 0 "Free HDD"
lcdWrite 1 "$n Mb ${p}%"
}
WidgetDateTime() {
#Дата и время
set `date`
lcdClear
lcdWrite 0 "$3 $2 $6"
lcdWrite 1 "$4"
}
#Main script
while [ : ]
do
WidgetRAM
sleep 3
WidgetLoad
sleep 3
WidgetUptime
sleep 3
WidgetWiFiClientsCount
sleep 3
WidgetHDD
sleep 3
WidgetDateTime
sleep 3
done
./lcdduino.sh: line 103: can't create /dev/tts/0: nonexistent directory и соответсвенно задумка с подключением разбивается как стекло. Хоть я и не такой чайник но как понял дело в каком-то порте. Прошу помощи у форумчан решить мою проблемку=) |
|
|
|
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|