Automatizace pomocí Arduina
Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
-
- Příspěvky: 13
- Registrován: stř dub 30, 2014 2:09 pm
- Reputace: 2
Automatizace pomocí Arduina
Dobrý den,
mám problém s kódem. Jde mi jen část vstupů a výstupů, když odstraním poznámky z toho kódu tak se mi v prohlížeči buď neukáže vůbec stránka napsaná v html, nebo po kliknutí na odkaz nereagují I/O a PWM výstupy. Prosím bych o radu, nebo pokud by někdo měl čas, zdali by jste byli ochotni si tento kód nahrát do Arduina a odzkoušet jestli by to někomu z Vás fungovalo i bez toho odkomentování netuším jestli to není třeba tím, že nemám originální Arduino, ale kopii koupenou z aukra. Momentálně mohu ovládat 1x PWM, 6x I/O výstup a 4x analogový vstup. Děkuji moc za každou radu.
mám problém s kódem. Jde mi jen část vstupů a výstupů, když odstraním poznámky z toho kódu tak se mi v prohlížeči buď neukáže vůbec stránka napsaná v html, nebo po kliknutí na odkaz nereagují I/O a PWM výstupy. Prosím bych o radu, nebo pokud by někdo měl čas, zdali by jste byli ochotni si tento kód nahrát do Arduina a odzkoušet jestli by to někomu z Vás fungovalo i bez toho odkomentování netuším jestli to není třeba tím, že nemám originální Arduino, ale kopii koupenou z aukra. Momentálně mohu ovládat 1x PWM, 6x I/O výstup a 4x analogový vstup. Děkuji moc za každou radu.
Kód: Vybrat vše
#include <SPI.h>
#include <Ethernet.h>
#include <Servo.h>
Servo myservo1; // create servo object to control a servo1 (pin 3)
Servo myservo2; // create servo object to control a servo2 (pin 5)
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x78, 0xEC }; //physical mac address
byte ip[] = { 192, 168, 0, 20 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port
String readString;
//////////////////////
void setup(){
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
// Pin Assignment through which relay will be controlled
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
myservo1.attach(3); //the pin for the servo1 control
myservo2.attach(5); //the pin for the servo1 control
//enable serial data print
Serial.begin(9600);
Serial.println("server"); // so I can keep track of what is loaded
}
void loop()
{
// Create a client connection
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
//read char by char HTTP request
if (readString.length() < 100) {
//store characters to string
readString += c;
//Serial.print(c);
}
//if HTTP request has ended
if (c == '\n') {
///////////////
Serial.println(readString); //print to serial monitor for debuging
client.println("HTTP/1.1 200 OK"); //send new page
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println("<HEAD>");
//client.println("<META HTTP-EQUIV=REFRESH CONTENT=5 URL=>"); web refresh every 5 seconds
client.println("<TITLE>Home Automation</TITLE>");
client.println("</HEAD>");
client.println("<body bgcolor=\"#99966\">");
client.println("<h1>HOME AUTOMATION</h1>");
client.println("<hr>");
client.println("<hr>");
client.println("<br>");
client.println("<br>");
client.println("<br>");
//Servo1 movement
client.println("<h4>SERVO 1");
client.println("<p style=\"word-spacing: 2em\">");
client.println("<a href=\"/?servo1_1\"\">Uhel=0</a>");
client.println("<a href=\"/?servo1_2\"\">Uhel=45</a>");
client.println("<a href=\"/?servo1_3\"\">Uhel=90</a>");
client.println("<a href=\"/?servo1_4\"\">Uhel=135</a>");
client.println("<a href=\"/?servo1_5\"\">Uhel=180</a>");
client.println("</p>");
client.println("<br>");
client.println("<br>");
client.println("<br>");
/*
client.println("<h4>SERVO 2");
client.println("<p style=\"word-spacing: 2em\">");
client.println("<a href=\"/?servo2_1\"\">Uhel=0</a>");
client.println("<a href=\"/?servo2_2\"\">Uhel=45</a>");
client.println("<a href=\"/?servo2_3\"\">Uhel=90</a>");
client.println("<a href=\"/?servo2_4\"\">Uhel=135</a>");
client.println("<a href=\"/?servo2_5\"\">Uhel=180</a>");
client.println("</p>");
*/
//Analog Input
client.println("ANALOG INPUT");
client.println("<br>");
client.println("<br>");
client.println("Data z pinu A0: ");
client.println(analogRead(A0));
client.println("<br>");
client.println("Data z pinu A1: ");
client.println(analogRead(A1));
client.println("<br>");
client.println("Data z pinu A2: ");
client.println(analogRead(A2));
client.println("<br>");
client.println("Data z pinu A3: ");
client.println(analogRead(A3));
/*
client.println("<br>");
client.println("Data z pinu A4: ");
client.println(analogRead(A4));
client.println("<br>");
client.println("Data z pinu A5: ");
client.println(analogRead(A5));
*/
// Relay
client.println("<center>");
client.println("<a href=\"/?relay1on\"\">Turn On Light 1</a>");
client.println("<a href=\"/?relay1off\"\">Turn Off Light 1</a><br />");
client.println("<br>");
client.println("<br>");
client.println("<a href=\"/?relay2on\"\">Turn On Light 2</a>");
client.println("<a href=\"/?relay2off\"\">Turn Off Light 2</a><br />");
client.println("<br>");
client.println("<br>");
client.println("<a href=\"/?relay3on\"\">Turn On Light 3</a>");
client.println("<a href=\"/?relay3off\"\">Turn Off Light 3</a><br />");
client.println("<br>");
client.println("<br>");
client.println("<a href=\"/?relay4on\"\">Turn On Light 4</a>");
client.println("<a href=\"/?relay4off\"\">Turn Off Light 4</a><br />");
client.println("<br>");
client.println("<br>");
client.println("<a href=\"/?relay5on\"\">Turn On Light 5</a>");
client.println("<a href=\"/?relay5off\"\">Turn Off Light 5</a><br />");
client.println("<br>");
client.println("<br>");
client.println("<a href=\"/?relay6on\"\">Turn On Light 6</a>");
client.println("<a href=\"/?relay6off\"\">Turn Off Light 6</a><br />");
client.println("<br>");
client.println("<br>");
client.println("</h4>");
client.println("</body>");
client.println("</HTML>");
delay(100);
//stopping client
client.stop();
///////////////////// control arduino pin
//relay conrol
if(readString.indexOf("?relay1on") >0)//checks for on
{
digitalWrite(2, HIGH); // set pin 4 high
Serial.println("Led On");
//client.println("Light 0 Is On");
client.println("<br>");
}
if(readString.indexOf("?relay1off") >0)//checks for off
{
digitalWrite(2, LOW); // set pin 4 low
Serial.println("Led Off");
//client.println("Light 0 Is Off");
client.println("<br>");
}
if(readString.indexOf("?relay2on") >0)//checks for on
{
digitalWrite(4, HIGH); // set pin 4 high
Serial.println("Led On");
//client.println("Light 0 Is On");
client.println("<br>");
}
if(readString.indexOf("?relay2off") >0)//checks for off
{
digitalWrite(4, LOW); // set pin 4 low
Serial.println("Led Off");
//client.println("Light 0 Is Off");
client.println("<br>");
}
if(readString.indexOf("?relay3on") >0)//checks for on
{
digitalWrite(6, HIGH); // set pin 4 high
Serial.println("Led On");
//client.println("Light 2 Is On");
client.println("<br>");
}
if(readString.indexOf("?relay3off") >0)//checks for off
{
digitalWrite(6, LOW); // set pin 4 low
Serial.println("Led Off");
//client.println("Light 2 Is Off");
client.println("<br>");
}
if(readString.indexOf("?relay4on") >0)//checks for on
{
digitalWrite(7, HIGH); // set pin 4 high
Serial.println("Led On");
// client.println("Light 3 Is On");
client.println("<br>");
}
if(readString.indexOf("?relay4off") >0)//checks for off
{
digitalWrite(7, LOW); // set pin 4 low
Serial.println("Led Off");
//client.println("Light 3 Is Off");
client.println("<br>");
}
if(readString.indexOf("?relay5on") >0)//checks for on
{
digitalWrite(8, HIGH); // set pin 4 high
Serial.println("Led On");
//client.println("Light 0 Is On");
client.println("<br>");
}
if(readString.indexOf("?relay5off") >0)//checks for off
{
digitalWrite(8, LOW); // set pin 4 low
Serial.println("Led Off");
//client.println("Light 0 Is Off");
client.println("<br>");
}
if(readString.indexOf("?relay6on") >0)//checks for on
{
digitalWrite(9, HIGH); // set pin 4 high
Serial.println("Led On");
//client.println("Light 0 Is On");
client.println("<br>");
}
if(readString.indexOf("?relay6off") >0)//checks for off
{
digitalWrite(9, LOW); // set pin 4 low
Serial.println("Led Off");
//client.println("Light 0 Is Off");
client.println("<br>");
}
// servo 1 control
if(readString.indexOf("servo1_1") >0)
{
myservo1.write(180);
delay (50);
}
if(readString.indexOf("servo1_2") >0)
{
myservo1.write(135);
delay (50);
}
if(readString.indexOf("servo1_3") >0)
{
myservo1.write(90);
delay (50);
}
if(readString.indexOf("servo1_4") >0)
{
myservo1.write(45);
delay (50);
}
if(readString.indexOf("servo1_5") >0)
{
myservo1.write(0);
delay (50);
}
/*
if(readString.indexOf("servo2_1") >0)
{
myservo1.write(180);
delay (50);
}
if(readString.indexOf("servo2_2") >0)
{
myservo1.write(135);
delay (50);
}
if(readString.indexOf("servo2_3") >0)
{
myservo1.write(90);
delay (50);
}
if(readString.indexOf("servo2_4") >0)
{
myservo1.write(45);
delay (50);
}
if(readString.indexOf("servo2_5") >0)
{
myservo1.write(0);
delay (50);
}
*/
//clearing string for next read
readString="";
}
}
}
}
}
- mypower.cz
- R.I.P.
- Příspěvky: 4927
- Registrován: pát bře 04, 2011 11:36 am
- Reputace: 521
Re: Automatizace pomocí Arduina
Zdravim, zdali je vase arduino OK muzete snadno vyzkouset pomoci napriklad tohoto prikladu vycitani dat z analogoveho vstupu pres www:
http://arduino.cc/en/Tutorial/WebServer
http://arduino.cc/en/Tutorial/WebServer
-
- Příspěvky: 13
- Registrován: stř dub 30, 2014 2:09 pm
- Reputace: 2
Re: Automatizace pomocí Arduina
Tak se zdá, že Arduino mi funguje tak jak má děkuji za radu. Budu muset zjistit teda proč mi to nechce všechno fungovat, docela mně to omezuje. Časem jsem ten kód chtěl rozšířit a nahrát ho do Arduino Mega.
-
- Příspěvky: 110
- Registrován: pon zář 03, 2012 8:47 pm
- Reputace: 1
Re: Automatizace pomocí Arduina
Ahoj ,zkus se ještě podívat na napájení ethernet modulu,zda je tam správný napětí.Měl jsem problem s ENC28J60 modulem(3,3v).Zkrátka mi tam kolísalo napájení z arduina a dělalo si to něco podobného co říkáš.Pingy to házelo tak nějak náhodně.Po výměně stabilizátoru vše ok.
Polánka 2790W (24v),8 x MoserBaer 195w Jih,6 x 205W Sever ,Midnite 150 Lite,NiCd 4x160Ah(life blackout)+18650 2,5kW+LiFePo 160Ah Winston+LiFePo 2x 120Ah by Mivvy, PowerJack LF 6kW by Matěj +5kW záložní by Matěj, HomeAssistant s komunikací BT BMS
-
- Příspěvky: 13
- Registrován: stř dub 30, 2014 2:09 pm
- Reputace: 2
Re: Automatizace pomocí Arduina
Ahoj, proměřil jsem napětí je v pohodě, je tam 3,3284 V. Já mám ethernetový modul s W5100. Asi už vím v čem je problém, napájím to prozatím z USB stabilizátor na UNU má na vstupu 4,5V a na výstupu 5V. Stabilizátor na ethernetovém modulu má těch necelých 3,3V. Vyzkouším to s adaptérem, až nějaký vyhrabu nějaký 9V/1A alespoň. Ty pingy z analogových vstupů se mi taky neustále mění no snad to bude tím . Dám vědět jak mi to dopadlo. Děkuji moc za radu.
-
- Příspěvky: 110
- Registrován: pon zář 03, 2012 8:47 pm
- Reputace: 1
Re: Automatizace pomocí Arduina
Tomu nerozumim,jak na vstupu může být 4,5 a na výstupu 5 ?kurrur píše:- stabilizátor na UNU má na vstupu 4,5V a na výstupu 5V.
Polánka 2790W (24v),8 x MoserBaer 195w Jih,6 x 205W Sever ,Midnite 150 Lite,NiCd 4x160Ah(life blackout)+18650 2,5kW+LiFePo 160Ah Winston+LiFePo 2x 120Ah by Mivvy, PowerJack LF 6kW by Matěj +5kW záložní by Matěj, HomeAssistant s komunikací BT BMS
-
- Příspěvky: 13
- Registrován: stř dub 30, 2014 2:09 pm
- Reputace: 2
Re: Automatizace pomocí Arduina
Taky to nechápu prostě jsem to tak naměřil, i když vím, že je to blbost. Našel jsem trafo 12V/500mA (po proměření 15V) nevím proč, ale když zapnu 2 led diody nebo dám signál pro otočení servomotoru tak se mi arduino restartuje.
-
- Příspěvky: 110
- Registrován: pon zář 03, 2012 8:47 pm
- Reputace: 1
Re: Automatizace pomocí Arduina
Nu,zkontroluj pořádně napětí.S tím restartem je to divný.Taky je možný že je arduino načatý nějakým ne příliš šetrným zacházením.
Polánka 2790W (24v),8 x MoserBaer 195w Jih,6 x 205W Sever ,Midnite 150 Lite,NiCd 4x160Ah(life blackout)+18650 2,5kW+LiFePo 160Ah Winston+LiFePo 2x 120Ah by Mivvy, PowerJack LF 6kW by Matěj +5kW záložní by Matěj, HomeAssistant s komunikací BT BMS
-
- Příspěvky: 2467
- Registrován: ned kvě 12, 2013 2:24 pm
- Reputace: 258
Re: Automatizace pomocí Arduina
Je to trafo, nebo spínaný zdroj? VA charakteristiku jsi měřil? Kondenzátor 5G+100n jsi vkládal? Problém by mohl být právě v tom, že jsi jej "našel".....kurrur píše:..... Našel jsem trafo 12V/500mA (po proměření 15V) ..........
Moudrost nepřichází vždy s věkem, někdy věk přichází sám.
-
- Příspěvky: 13
- Registrován: stř dub 30, 2014 2:09 pm
- Reputace: 2
Re: Automatizace pomocí Arduina
Je to trafo od staré nabíječky vyfiltrované a stabilizované. Nedalo mi to a připojil jsem na arduino spínaný zdroj 5V/1A od nabíječky z mobilu, Arduino se pořád resetuje dokola. Jak to myslíš s tím šetrným zacházením ? Jak mi přišlo tak jsem ho položil na stůl a jen ho programuju. Za nějaký čas jsem si objednal ethernetový modul a ten mám od té doby co přišel připojený a dělám už jen tu automatizaci.
-
- Příspěvky: 34
- Registrován: ned srp 11, 2013 11:09 pm
- Reputace: 0
Re: Automatizace pomocí Arduina
Na mega mi to teď funguje dobře,opravil jsem jen obnovování stránky a z webu obě serva řídily pin 3 takže jsem opravil číslování myservo1 na 2 v posledních řádcích.
Dost se divím že ti to funguje s IP adresou 192.168.0.20 ,čekal bych spíš 192.168.1.20
Dost se divím že ti to funguje s IP adresou 192.168.0.20 ,čekal bych spíš 192.168.1.20
Kód: Vybrat vše
#include <SPI.h>
#include <Ethernet.h>
#include <Servo.h>
Servo myservo1; // create servo object to control a servo1 (pin 3)
Servo myservo2; // create servo object to control a servo2 (pin 5)
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x78, 0xEC }; //physical mac address
byte ip[] = { 192, 168, 0, 20 }; // ip in lan
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
EthernetServer server(80); //server port
String readString;
//////////////////////
void setup(){
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
// Pin Assignment through which relay will be controlled
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
myservo1.attach(3); //the pin for the servo1 control
myservo2.attach(5); //the pin for the servo1 control
//enable serial data print
Serial.begin(9600);
Serial.println("server"); // so I can keep track of what is loaded
}
void loop()
{
// Create a client connection
EthernetClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
char c = client.read();
//read char by char HTTP request
if (readString.length() < 100) {
//store characters to string
readString += c;
Serial.print(c); //********************
}
//if HTTP request has ended
if (c == '\n') {
///////////////
Serial.println(readString); //print to serial monitor for debuging
client.println("HTTP/1.1 200 OK"); //send new page
client.println("Content-Type: text/html");
client.println();
client.println("<HTML>");
client.println("<HEAD>");
// client.println("<META HTTP-EQUIV="REFRESH" CONTENT="5">"); // web refresh every 5 seconds
client.println("<meta http-equiv=\"refresh\" content=\"5\">");
client.println("<TITLE>Home Automation</TITLE>");
client.println("</HEAD>");
client.println("<body bgcolor=\"#99966\">");
client.println("<h1>HOME AUTOMATION</h1>");
client.println("<hr>");
client.println("<hr>");
client.println("<br>");
client.println("<br>");
client.println("<br>");
//Servo1 movement
client.println("<h4>SERVO 1");
client.println("<p style=\"word-spacing: 2em\">");
client.println("<a href=\"/?servo1_1\"\">Uhel=0</a>");
client.println("<a href=\"/?servo1_2\"\">Uhel=45</a>");
client.println("<a href=\"/?servo1_3\"\">Uhel=90</a>");
client.println("<a href=\"/?servo1_4\"\">Uhel=135</a>");
client.println("<a href=\"/?servo1_5\"\">Uhel=180</a>");
client.println("</p>");
client.println("<br>");
client.println("<br>");
client.println("<br>");
client.println("<h4>SERVO 2");
client.println("<p style=\"word-spacing: 2em\">");
client.println("<a href=\"/?servo2_1\"\">Uhel=0</a>");
client.println("<a href=\"/?servo2_2\"\">Uhel=45</a>");
client.println("<a href=\"/?servo2_3\"\">Uhel=90</a>");
client.println("<a href=\"/?servo2_4\"\">Uhel=135</a>");
client.println("<a href=\"/?servo2_5\"\">Uhel=180</a>");
client.println("</p>");
//Analog Input
client.println("ANALOG INPUT");
client.println("<br>");
client.println("<br>");
client.println("Data z pinu A0: ");
client.println(analogRead(A0));
client.println("<br>");
client.println("Data z pinu A1: ");
client.println(analogRead(A1));
client.println("<br>");
client.println("Data z pinu A2: ");
client.println(analogRead(A2));
client.println("<br>");
client.println("Data z pinu A3: ");
client.println(analogRead(A3));
client.println("<br>");
client.println("Data z pinu A4: ");
client.println(analogRead(A4));
client.println("<br>");
client.println("Data z pinu A5: ");
client.println(analogRead(A5));
// Relay
client.println("<center>");
client.println("<a href=\"/?relay1on\"\">Turn On Light 1</a>");
client.println("<a href=\"/?relay1off\"\">Turn Off Light 1</a><br />");
client.println("<br>");
client.println("<br>");
client.println("<a href=\"/?relay2on\"\">Turn On Light 2</a>");
client.println("<a href=\"/?relay2off\"\">Turn Off Light 2</a><br />");
client.println("<br>");
client.println("<br>");
client.println("<a href=\"/?relay3on\"\">Turn On Light 3</a>");
client.println("<a href=\"/?relay3off\"\">Turn Off Light 3</a><br />");
client.println("<br>");
client.println("<br>");
client.println("<a href=\"/?relay4on\"\">Turn On Light 4</a>");
client.println("<a href=\"/?relay4off\"\">Turn Off Light 4</a><br />");
client.println("<br>");
client.println("<br>");
client.println("<a href=\"/?relay5on\"\">Turn On Light 5</a>");
client.println("<a href=\"/?relay5off\"\">Turn Off Light 5</a><br />");
client.println("<br>");
client.println("<br>");
client.println("<a href=\"/?relay6on\"\">Turn On Light 6</a>");
client.println("<a href=\"/?relay6off\"\">Turn Off Light 6</a><br />");
client.println("<br>");
client.println("<br>");
client.println("</h4>");
client.println("</body>");
client.println("</HTML>");
delay(100);
//stopping client
client.stop();
///////////////////// control arduino pin
//relay conrol
if(readString.indexOf("?relay1on") >0)//checks for on
{
digitalWrite(2, HIGH); // set pin 2 high
Serial.println("Led On");
client.println("Light 0 Is On");
client.println("<br>");
}
if(readString.indexOf("?relay1off") >0)//checks for off
{
digitalWrite(2, LOW); // set pin 2 low
Serial.println("Led Off");
client.println("Light 0 Is Off");
client.println("<br>");
}
if(readString.indexOf("?relay2on") >0)//checks for on
{
digitalWrite(4, HIGH); // set pin 4 high
Serial.println("Led On");
client.println("Light 0 Is On");
client.println("<br>");
}
if(readString.indexOf("?relay2off") >0)//checks for off
{
digitalWrite(4, LOW); // set pin 4 low
Serial.println("Led Off");
client.println("Light 0 Is Off");
client.println("<br>");
}
if(readString.indexOf("?relay3on") >0)//checks for on
{
digitalWrite(6, HIGH); // set pin 6 high
Serial.println("Led On");
client.println("Light 2 Is On");
client.println("<br>");
}
if(readString.indexOf("?relay3off") >0)//checks for off
{
digitalWrite(6, LOW); // set pin 6 low
Serial.println("Led Off");
client.println("Light 2 Is Off");
client.println("<br>");
}
if(readString.indexOf("?relay4on") >0)//checks for on
{
digitalWrite(7, HIGH); // set pin 7 high
Serial.println("Led On");
client.println("Light 3 Is On");
client.println("<br>");
}
if(readString.indexOf("?relay4off") >0)//checks for off
{
digitalWrite(7, LOW); // set pin 7 low
Serial.println("Led Off");
client.println("Light 3 Is Off");
client.println("<br>");
}
if(readString.indexOf("?relay5on") >0)//checks for on
{
digitalWrite(8, HIGH); // set pin 8 high
Serial.println("Led On");
client.println("Light 0 Is On");
client.println("<br>");
}
if(readString.indexOf("?relay5off") >0)//checks for off
{
digitalWrite(8, LOW); // set pin 8 low
Serial.println("Led Off");
client.println("Light 0 Is Off");
client.println("<br>");
}
if(readString.indexOf("?relay6on") >0)//checks for on
{
digitalWrite(9, HIGH); // set pin 9 high
Serial.println("Led On");
client.println("Light 0 Is On");
client.println("<br>");
}
if(readString.indexOf("?relay6off") >0)//checks for off
{
digitalWrite(9, LOW); // set pin 9 low
Serial.println("Led Off");
client.println("Light 0 Is Off");
client.println("<br>");
}
// servo 1 control
if(readString.indexOf("servo1_1") >0)
{
myservo1.write(180);
delay (50);
}
if(readString.indexOf("servo1_2") >0)
{
myservo1.write(135);
delay (50);
}
if(readString.indexOf("servo1_3") >0)
{
myservo1.write(90);
delay (50);
}
if(readString.indexOf("servo1_4") >0)
{
myservo1.write(45);
delay (50);
}
if(readString.indexOf("servo1_5") >0)
{
myservo1.write(0);
delay (50);
}
if(readString.indexOf("servo2_1") >0)
{
myservo2.write(180);
delay (50);
}
if(readString.indexOf("servo2_2") >0)
{
myservo2.write(135);
delay (50);
}
if(readString.indexOf("servo2_3") >0)
{
myservo2.write(90);
delay (50);
}
if(readString.indexOf("servo2_4") >0)
{
myservo2.write(45);
delay (50);
}
if(readString.indexOf("servo2_5") >0)
{
myservo2.write(0);
delay (50);
}
//clearing string for next read
readString="";
}
}
}
}
}
-
- Příspěvky: 13
- Registrován: stř dub 30, 2014 2:09 pm
- Reputace: 2
Re: Automatizace pomocí Arduina
Tak jsem to zkoumal blíže a zjistil jsem, že to asi bude pamětí arduina, maximální velikost kódu co můžu do arduina zapsat je 17 690 bajtů z 32 256, když překročím tuto paměť tak mi už nereagujou povely z výše uvedeného kódu. Objednal jsem si z eBaye Arduino Mega tak snad už to s tím půjde . Ještě uvažuju o tom, že bych na SD kartu nahrál HTML kód a v arduinu nechal zapsaný zbytek.
-
- Příspěvky: 13
- Registrován: stř dub 30, 2014 2:09 pm
- Reputace: 2
Re: Automatizace pomocí Arduina
Tak jsem zjistil že tou pamětí to asi nebude, bude to asi něco v tom kódu, jelikož jsem do arduina nahrál tento webový server http://startingelectronics.com/tutorial ... D-card-IO/
zabírá přes 24 454 bajtů. Teď jsem už úplně v koncích, když Stingerovi to na Mega šlo. Nevíte čím by to ještě tak mohlo být ?
zabírá přes 24 454 bajtů. Teď jsem už úplně v koncích, když Stingerovi to na Mega šlo. Nevíte čím by to ještě tak mohlo být ?
- ixo
- Příspěvky: 489
- Registrován: stř říj 10, 2012 6:11 pm
- Reputace: 22
- Bydliště: Bratislava
Re: Automatizace pomocí Arduina
Mám skúenosť, že okrem dĺžky samotného kódu svoju rolu hrá aj obsah použivaných premenných (koľko zaberá miesta v pamäti). Ak sa dá, tak nepotrebný obsah premenných po použití maž.
1900 Wp, LiFePo 8x200Ah + 123\SmartBMS, Tristar MPPT 60A, Meanwell 1 kW, PowerJack 5kW, Bratislava
Monitoring systému: https://panel.homeinfo.sk/?id_objekt=15 ... elektraren
(Ne)návratnosť systému: https://tinyurl.com/cx74hkv
Zdieľaná databáza meničov: https://tinyurl.com/mx6gvsj
Monitoring systému: https://panel.homeinfo.sk/?id_objekt=15 ... elektraren
(Ne)návratnosť systému: https://tinyurl.com/cx74hkv
Zdieľaná databáza meničov: https://tinyurl.com/mx6gvsj
- mypower.cz
- R.I.P.
- Příspěvky: 4927
- Registrován: pát bře 04, 2011 11:36 am
- Reputace: 521
Re: Automatizace pomocí Arduina
Zdravím,
1) Místo objektu String použijte raději standardní C++ string
2) http://www.arduino.cc/en/Reference/PROGMEM
1) Místo objektu String použijte raději standardní C++ string
2) http://www.arduino.cc/en/Reference/PROGMEM
-
- Příspěvky: 13
- Registrován: stř dub 30, 2014 2:09 pm
- Reputace: 2
Re: Automatizace pomocí Arduina
Děkuji za rady, určitě to bude tím, když mi to takhle blbne problém je v tom, že moc programovat neumím (spíše se tím arduinem učím) a nevím jak bych měl zkrátit ten program, koukám po různých kódech co kdo vytvořil a zkouším tomu porozumět, mám doma i knihu C a C++ tak si v ní čtu. No snad časem na to příjdu díky moc za rady . Kdyby jste měli nějaké typy na literaturu budu rád děkuji.
- mypower.cz
- R.I.P.
- Příspěvky: 4927
- Registrován: pát bře 04, 2011 11:36 am
- Reputace: 521
Re: Automatizace pomocí Arduina
Zdravim, ja se priznam ze jsem sam v C++ pred nejakou ne zase tak dlouhou dobou take neumel, je dobre zacit od malych programu a postupne pomalicku "komplikovat". Je pravdou ale ze u me hraje roli dlouholeta praxe ve firemnim prostredi na firemnich aplikacich v objektovem pascalu (tehdy Delphi 6), pak PHP, javascript a ty dva posledni maji k C++ uz dost blizko. V C (i v mnou zminenem pascalu) je ale potreba byt zvlast opatrny kvuli pointerum (ukazatelum), spravne uvolnovat objekty, hlidat si ram, merit kde se co da. Rozhodne se nebranim tomu, aby jste se mrknul jak nektere veci delam trebas v opensource projektu microlog. Napriklad najdete tam funkci pro zjisteni kolik ram je k dispozici, cimz si zjistite co vlastne kolik zere ram, jak se to po cem zmeni (napriklad pred vstupem do nejake funkce a po vystupu z ni), pripadne pokud nekde zapominate ram uvolnovat tak vam toto cislo samozrejme pravidelne roste az do uplneho vytuhnuti. U zarizeni kde mame malo pameti, jako napriklad arduino, tam je to obzvlaste dulezite tohle overovani a mereni. Kazdy usetreny bajt ma obrovskou hodnotu. Na to dnes vyvojari u beznych PC znacne zapominaji, proto PC obvykle i u trivialnich aplikaci swapuji jako blazen a zabiraji obrovske mnozstvi ram. Idealni stav je kdyz se vam pri behu pamet drzi na stejnych hodnotach. Take je potreba mit na pameti, ze arduino funguje tak, ze zasobnik je plnen z jedne strany ram a pamet pro promenne z druhe. Pokud se tyto dve mista potkaji a zacnou se vzajemne prepisovat, nemusi se stat nic, muze se to zacit chovat podivne, nebo to muze z niceho nic necekane uplne vytuhnout.
Zdrojak micrologu najdete na http://microlog.mypower.cz/source
napoveda: funkce pro zjisteni kolik ram je k dispozici je pojmenovana "freeRam()"
PS: pro Cckare - i ja se ucim.. takze ani microlog neni jeste uplne cisty a je tam dost bastliku, ktere urcite v pristi verzi, na ktere prave pracuji, vylepsim.
Zdrojak micrologu najdete na http://microlog.mypower.cz/source
napoveda: funkce pro zjisteni kolik ram je k dispozici je pojmenovana "freeRam()"
PS: pro Cckare - i ja se ucim.. takze ani microlog neni jeste uplne cisty a je tam dost bastliku, ktere urcite v pristi verzi, na ktere prave pracuji, vylepsim.
-
- Příspěvky: 13
- Registrován: stř dub 30, 2014 2:09 pm
- Reputace: 2
Re: Automatizace pomocí Arduina
Musím Vám zatleskat ten microlog je skvělá věc . Koukal jsem na to opravdu klobouk dolů graficky pěkně udělané skvělý nápad ! No já jsem brouzdal po internetu a díval jsem se na různé zdrojové kódy ovládání arduina přes internet a pár jich mě zaujalo tak jsem se do toho ponořil a snažil se to pochopit a postupně jsem zkoušel, až nakonec mi to teď jakž takž funguje ale ještě je toho hodně co bych tam chtěl udělat Strašně moc děkuji za rady
-
- Podobná témata
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 2 Odpovědi
- 573 Zobrazení
-
Poslední příspěvek od 10055
-
- 3 Odpovědi
- 605 Zobrazení
-
Poslední příspěvek od glottis
-
-
Meranie teploty pomocou Arduina a Visual Basicu 2015
Meranie teploty pomocou Arduina a Visual Basicu 2015
- 1 Odpovědi
- 1501 Zobrazení
-
Poslední příspěvek od kodl69
-
-
- 5 Odpovědi
- 1048 Zobrazení
-
Poslední příspěvek od PetrPLZ
Kdo je online
Uživatelé prohlížející si toto fórum: Claudebot [Bot] a 0 hostů