помогите дописать, требуется эти значения мониторить по лан . есть W5100
- Войдите на сайт для отправки комментариев
Пт, 26/12/2014 - 13:52
#include <LiquidCrystal.h>
LiquidCrystal lcd(50, 52, 48,46,44,42);
float opn=4.99; //опорное напряжение вольты
float volt; // переменная в которой храним конечное значение вольт
float var0; // храним промежуточное значение вольт, данные с аналового входа №0
int amper ; //переменная в которой храним конечное значение миллиампер.используем целочисленные значения,и посему интовая переменная
float var1 ; // храним промежуточное значение вольт, данные с аналового входа №1
float T1; // переменная в которой храним конечное значение температуры первого термодатчик (LM35) измеряем температуру выходного тразистора
float var2;
float P; // мощность - призведение ампер на вольт
void setup()
{
lcd.begin(16, 2); //инициализация LCD 1602
}
void loop ()
{
var0 = analogRead(0);
volt =(opn*var0/1024.0);
float U1; // вводим дополнительную переменную чтоб просчитать напряжение после делителя
U1=volt*((2010.0+294.0)/294.0)-(opn*var1/1024.0);//(2010.0+294.0)/294.0 просчитываем падение напряжения на делителе R1 2010ом R2 294ома
//(opn*var1/1024.0)вычитаем падение напряжения на шунте амперметра
var1 = analogRead(1);
amper =((opn*var1/1.0240)/.50); //измеряем напряжение в милливольтах и делим на .50 -сопротивление шунта,конечное значение переменной в миллиамперах
var2 = analogRead(2);
T1=(opn*var2/10.24);// в качестве термодатчика используем аналоговый Lm35 с зависимостью 10мв/град С
var2 = analogRead(3);
T1=(opn*var2/10.24);// в качестве термодатчика используем аналоговый Lm35 с зависимостью 10мв/град С
//P=amper*U1/1000; //делим на 1000 тк.к значение тока в миллиамперах
lcd.setCursor(0,1) ;
lcd.print(U1);
lcd.print(" ");
lcd.setCursor(6,1) ;
lcd.print("V");
//lcd.print(var0);вывод кода АЦП,так на всякий случай
lcd.setCursor(0,0) ;
lcd.print(amper);
lcd.print(" ");
lcd.setCursor(4,0);
lcd.print("mA1");
//lcd.print (var1);//вывод кода АЦП,так на всякий случай
lcd.setCursor(8,0) ;
lcd.print(amper);
lcd.print(" ");
lcd.setCursor(12,0);
lcd.print("mA2");
//lcd.print (var1);//вывод кода АЦП,так на всякий случай
lcd.setCursor(8,1) ;
//lcd.print(P);
lcd.print(" NORMAL ");///
delay(1000);//задержка-обновление экрана
}
#include <LiquidCrystal.h> LiquidCrystal lcd(50, 52, 48,46,44,42); float vout = 0.0; float V1 = 0.0; float R1 = 100000.0; float R2 = 10000.0; int value = 0; void setup() { lcd.begin(16, 2); //инициализация LCD 1602 } void loop () { float L1 = 0; for(int i = 0; i < 1; i++) { L1 = L1 + (.0264 * analogRead(A0) -13.51); float L2 = 0; for(int i = 0; i < 1; i++) { L2 = L2 + (.0264 * analogRead(A1) -13.51); value = analogRead(A2); vout = (value * 5.0) / 1024.0; V1 = vout / (R2/(R1+R2)); if (V1<0.09) { V1=0.0; delay(1); } { lcd.setCursor(0,1); lcd.print(V1); lcd.print(" "); lcd.setCursor(5,1) ; lcd.print("V"); lcd.setCursor(11,0) ; lcd.print(L1); lcd.print(" "); lcd.setCursor(8,0); lcd.print("L1"); lcd.setCursor(11,1) ; lcd.print(L2); lcd.print(" "); lcd.setCursor(8,1); lcd.print("L2"); delay(900);//задержка-обновление экрана } } } }Или сюда или сюда.
#include <Adafruit_GFX.h> #include <Adafruit_PCD8544.h> #include <TimerOne.h> #include <SPI.h> #include <Ethernet.h> // pin 22 - Serial clock out (SCLK) // pin 24 - Serial data out (DIN) // pin 26 - Data/Command select (D/C) // pin 28 - LCD chip select (CS) // pin 30 - LCD reset (RST) Adafruit_PCD8544 display = Adafruit_PCD8544(22,24,26,28,30); int PressureOut, PressureSet; int PressureSet_Pin = 0; int PressureRead_Pin = 1; int analogRead_Pin = (12,13,14,15); int led1 = 2; // Порт 2, оптопара на линию 1 int led2 = 3; // Порт 3, оптопара на линию 2 int led3 = 48; //сухие контакты нет сети 220в int led4 = 50; //сухие контакты 48в int led5 = 52; //сухие контакты ток в линии1 int led6 = 53; //сухие контакты ток в линии2 byte mac[] = { 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xF1 }; byte ip[] = { 192, 168, 1, 2 }; EthernetServer server(80); byte my_addr[8]={0x28,0x2A,0x78,0x65,5,0,0,0x10}; void setup() { display.begin(); display.setContrast(60); pinMode(led1, OUTPUT); // Порт 2, оптопара на линию 1 pinMode(led2, OUTPUT); // Порт 3, оптопара на линию 2 pinMode(led3, OUTPUT); //сухие контакты нет сети 220в pinMode(led4, OUTPUT); //сухие контакты 48в pinMode(led5, OUTPUT); //сухие контакты ток в линии1 pinMode(led6, OUTPUT); //сухие контакты ток в линии2 Ethernet.begin(mac, ip); server.begin(); } void loop() { { digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); } int U1; U1 = analogRead(12); if (U1<100) { digitalWrite(led4,HIGH); delay(100); digitalWrite(led1,LOW); digitalWrite(led2,LOW); delay(1000); digitalWrite(led1,HIGH); digitalWrite(led2,HIGH); delay(1000); } else if(U1>100) digitalWrite(led4,LOW); int U2; U2 = analogRead(13); if (U2<100) { digitalWrite(led5,HIGH); delay(100); } else if(U2>100) digitalWrite(led5,LOW); digitalWrite(led1,LOW); digitalWrite(led2,LOW); delay(1000); digitalWrite(led1,HIGH); digitalWrite(led2,HIGH); delay(1000); int L1; L1 =analogRead(14); if (L1<100) { digitalWrite(led5,HIGH); delay(500); }else if(L1>100) digitalWrite(led5,LOW); int L2; L2 =analogRead(15); if (L2<100) { digitalWrite(led6,HIGH); delay(500); }else if(L2>100) digitalWrite(led6,LOW); { display.setTextSize(1); display.setTextColor(BLACK); display.setCursor(0,0); display.println("display :)"); display.setCursor(2,10); display.println(U1); display.setCursor(40,10); display.println("Volt"); display.setCursor(70,10); display.println("AC"); display.setCursor(2,20); display.println(U2); display.setCursor(40,20); display.println("Volt"); display.setCursor(70,20); display.println("DC"); display.setCursor(2,29); display.println(L1); display.setCursor(35,29); display.println("Amper"); display.setCursor(70,29); display.println("L1"); display.setCursor(2,39); display.println(L2); display.setCursor(35,39); display.println("Amper"); display.setCursor(70,39); display.println("L1"); display.display(); delay(500); display.clearDisplay(); } { EthernetClient client = server.available(); if (client) { // an http request ends with a blank line boolean currentLineIsBlank = true; while (client.connected()) { if (client.available()) { char c = client.read(); if (c == '\n' && currentLineIsBlank) { client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println("Refresh: 5"); client.println(); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.print("Ток на линии 1");client.print("="); // надо выстроить каждую строку в столбик и закрасить надписи в зелёный цвет client.print(L1); client.print('\n'); client.print("--"); client.print("Ток на линии 2");client.print("="); client.print(L2); client.print("--"); client.print("Напруга 220в");client.print("="); client.print(U2); client.print("--"); client.print("Напруга 48в");client.print("="); client.print(U1); client.print("--"); if (U2<100) //если напруга пропала в браузере надпись { client.print("Напруга 220в ПИЗДЕЦ"); //надпись сделать красного цвета и желательно моргать client.print("--"); } if (U1<100) //если напруга пропала в браузере надпись { client.print("Напруга 48в ПИЗДЕЦ"); //надпись сделать красного цвета и желательно моргать client.print("--"); } client.println("<br />"); if (L1<100) //если упал ток потребления в линии1 в браузере надпись { client.print(" ПИЗДЕЦ на линии одын "); //надпись сделать красного цвета и желательно моргать client.print("--"); } if (L2<100) //если упал ток потребления в линии2 в браузере надпись { client.print(" ПИЗДЕЦ на линии два "); //надпись сделать красного цвета и желательно моргать client.print("--"); } break; } if (c == '\n') { currentLineIsBlank = true; } else if (c != '\r') { currentLineIsBlank = false; } } } delay(1); client.stop(); } } delay(1000); //делаем паузу всей программы }кто может проверить ? проверьте пожалуста всё правильно сделал ??? если нет подскажите
да ещё в коде сервера помогите дописать в коментах написал что сделать, может как то красочнее мож сделать
все делал на меге + W5100+ дисп от ноки3110 компилится с arduino-1.5.8 библиотеки если над прикреплю все измерения без формул т.к пока не ясно какие датчики будут
тут все вымерли ??