Re: Växthusautomation
Postat: 20 augusti 2019, 19:17:17
Tackar igen för feedbacken!
Just nu är det rätt mycket på jobbet och det stör hobbyverksamheten. Det kan nog hända att jag inte hinner skriva den utlovade fortsättningen förrän i början av september.
(Bra att man har ett system som sköter växthuset...
)
Därför tänkte jag i stället bjuda på excel-filen med vilken man kan skapa textsträngar för att sedan ladda upp dem i Arduinons interna EEPROM.
Fungerar både i Excel och i LibreCalc.
(Läs fliken med förklaringar hur tabellen fungerar.) Jag bifogar också kompanjonen till tabellen, d.v.s. uppladdningsprogrammet. Listningen innehåller inga förklaringar, men programmet är så simpelt att det nog knappast ens behöver det.
Man kunde förstås göra programlistan kortare om man kombinerade looparna, men eftersom det är ett program som bara laddas ner och körs en gång, så tyckte jag inte det var viktigt.
Fotnot: Fast jag använder excel ganska mycket blir jag allt emellanåt ändå förvånad över HUR användbart det i själva verket är!
Jag brukar ofta använda excel för att skapa G-kod till CNC-fräsen också. Speciellt då när man behöver göra någon geometrisk figur är det enklast att låta excel räkna koordinaterna och skapa koden, och så bara Copy och Paste till en textfil, och så kör man.
MYCKET användbart!
Just nu är det rätt mycket på jobbet och det stör hobbyverksamheten. Det kan nog hända att jag inte hinner skriva den utlovade fortsättningen förrän i början av september.
(Bra att man har ett system som sköter växthuset...

Därför tänkte jag i stället bjuda på excel-filen med vilken man kan skapa textsträngar för att sedan ladda upp dem i Arduinons interna EEPROM.
Fungerar både i Excel och i LibreCalc.
(Läs fliken med förklaringar hur tabellen fungerar.) Jag bifogar också kompanjonen till tabellen, d.v.s. uppladdningsprogrammet. Listningen innehåller inga förklaringar, men programmet är så simpelt att det nog knappast ens behöver det.
Kod: Markera allt
/* Uploads text strings to the internal EEPROM, Copyright H 2018, 2019 */
#include "stdlib.h"
#include "EEPROM.h"
byte vect01[16] = {0x00,0x80,0x00,0x84,0x00,0x88,0x00,0x8C,0x00,0x90,0x00,0x95,0x00,0x99,0x00,0x9D}; // 0000
byte vect02[16] = {0x00,0xA1,0x00,0xA6,0x00,0xB4,0x00,0xBC,0x00,0xC3,0x00,0xCE,0x00,0xD4,0x00,0xDA}; // 0010
byte vect03[16] = {0x00,0xDF,0x00,0xE7,0x00,0xEC,0x00,0xF5,0x00,0xFC,0x01,0x04,0x01,0x0A,0x01,0x14}; // 0020
byte vect04[16] = {0x01,0x1A,0x01,0x1F,0x01,0x25,0x01,0x2A,0x01,0x30,0x01,0x34,0x01,0x3A,0x01,0x43}; // 0030
byte vect05[16] = {0x01,0x4B,0x01,0x55,0x01,0x5F,0x01,0x69,0x01,0x6D,0x01,0x71,0x01,0x78,0x01,0x82}; // 0040
byte vect06[16] = {0x01,0x88,0x01,0x8E,0x01,0x94,0x01,0x9B,0x01,0xA0,0x01,0xA4,0x01,0xAB,0x01,0xB4}; // 0050
byte vect07[16] = {0x01,0xBA,0x01,0xBD,0x01,0xC1,0x01,0xC6,0x01,0xCB,0x01,0xD0,0x01,0xD4,0x01,0xD9}; // 0060
byte vect08[16] = {0x01,0xDD,0x01,0xE7,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; // 0070
byte text01[16] = {0x53,0x5C,0x4E,0x00,0x4D,0x5D,0x4E,0x00,0x54,0x49,0x53,0x00,0x4F,0x4E,0x53,0x00}; // 0080
byte text02[16] = {0x54,0x4F,0x52,0x53,0x00,0x46,0x52,0x45,0x00,0x4C,0x5C,0x52,0x00,0x44,0x41,0x47}; // 0090
byte text03[16] = {0x00,0x4C,0x4F,0x47,0x47,0x00,0x49,0x4E,0x53,0x54,0x5B,0x4C,0x4C,0x4E,0x49,0x4E}; // 00A0
byte text04[16] = {0x47,0x41,0x52,0x00,0x41,0x56,0x53,0x4C,0x55,0x54,0x41,0x00,0x50,0x49,0x4E,0x4B}; // 00B0
byte text05[16] = {0x4F,0x44,0x00,0x5C,0x50,0x50,0x4E,0x41,0x20,0x54,0x45,0x4D,0x50,0x00,0x46,0x55}; // 00C0
byte text06[16] = {0x4B,0x54,0x2E,0x00,0x54,0x52,0x59,0x43,0x4B,0x00,0x4C,0x4A,0x55,0x53,0x00,0x49}; // 00D0
byte text07[16] = {0x52,0x20,0x4C,0x4A,0x55,0x53,0x00,0x41,0x4C,0x4C,0x41,0x00,0x54,0x49,0x4C,0x4C}; // 00E0
byte text08[16] = {0x42,0x41,0x4B,0x41,0x00,0x4B,0x4C,0x4F,0x43,0x4B,0x41,0x00,0x56,0x5B,0x58,0x54}; // 00F0
byte text09[16] = {0x48,0x55,0x53,0x00,0x44,0x41,0x54,0x55,0x4D,0x00,0x5C,0x50,0x50,0x4E,0x41,0x20}; // 0100
byte text10[16] = {0x54,0x49,0x44,0x00,0x4C,0x55,0x43,0x4B,0x41,0x00,0x4D,0x4F,0x44,0x45,0x00,0x53}; // 0110
byte text11[16] = {0x54,0x5B,0x4E,0x47,0x20,0x54,0x45,0x4D,0x50,0x00,0x53,0x54,0x5B,0x4E,0x47,0x20}; // 0120
byte text12[16] = {0x54,0x49,0x44,0x00,0x41,0x4B,0x54,0x49,0x56,0x00,0x44,0x49,0x47,0x49,0x2F,0x41}; // 0130
byte text13[16] = {0x4E,0x41,0x00,0x42,0x41,0x53,0x20,0x47,0x47,0x52,0x00,0x42,0x41,0x53,0x20,0x41}; // 0140
byte text14[16] = {0x4E,0x54,0x41,0x4C,0x00,0x45,0x58,0x54,0x20,0x25,0x20,0x78,0x31,0x30,0x00,0x45}; // 0150
byte text15[16] = {0x58,0x54,0x20,0x41,0x4E,0x54,0x41,0x4C,0x00,0x4D,0x41,0x58,0x00,0x4D,0x49,0x4E}; // 0160
byte text16[16] = {0x00,0x53,0x54,0x41,0x54,0x55,0x53,0x00,0x48,0x55,0x56,0x55,0x44,0x4D,0x45,0x4E}; // 0170
byte text17[16] = {0x59,0x00,0x53,0x50,0x41,0x52,0x41,0x00,0x56,0x5B,0x4E,0x54,0x41,0x00,0x52,0x45}; // 0180
byte text18[16] = {0x4E,0x53,0x41,0x00,0x53,0x59,0x53,0x54,0x45,0x4D,0x00,0x4E,0x49,0x56,0x5D,0x00}; // 0190
byte text19[16] = {0x53,0x59,0x53,0x00,0x41,0x56,0x42,0x52,0x59,0x54,0x00,0x42,0x45,0x4B,0x52,0x5B}; // 01A0
byte text20[16] = {0x46,0x54,0x41,0x00,0x53,0x54,0x41,0x52,0x54,0x00,0x4F,0x4B,0x00,0x45,0x52,0x52}; // 01B0
byte text21[16] = {0x00,0x53,0x5B,0x4E,0x44,0x20,0x44,0x41,0x54,0x41,0x00,0x46,0x55,0x4C,0x4C,0x00}; // 01C0
byte text22[16] = {0x54,0x4F,0x4D,0x00,0x56,0x5B,0x4C,0x4A,0x20,0x5A,0x4F,0x4E,0x00,0x56,0x41,0x54}; // 01D0
byte text23[16] = {0x54,0x4E,0x41,0x20,0x4E,0x55,0x00,0x56,0x5B,0x58,0x4C,0x41,0x20,0x4E,0x55,0x00}; // 01E0
byte text24[16] = {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x12,0x34}; // 01F0
word vectpnt;
word textpnt;
byte once = 0;
void setup()
{
Serial.begin(9600);
}
void writeVectors()
{
for (byte vecpnt = 0; vecpnt < 0x0010; vecpnt++)
{
EEPROM.write(vecpnt, vect01[vecpnt]);
delay(5);
Serial.print(" . ");
}
for (byte vecpnt = 0; vecpnt < 0x0010; vecpnt++)
{
EEPROM.write(vecpnt + 16, vect02[vecpnt]);
delay(5);
Serial.print(" . ");
}
for (byte vecpnt = 0; vecpnt < 0x0010; vecpnt++)
{
EEPROM.write(vecpnt + 32, vect03[vecpnt]);
delay(5);
Serial.print(" . ");
}
for (byte vecpnt = 0; vecpnt < 0x0010; vecpnt++)
{
EEPROM.write(vecpnt + 48, vect04[vecpnt]);
delay(5);
Serial.print(" . ");
}
for (byte vecpnt = 0; vecpnt < 0x0010; vecpnt++)
{
EEPROM.write(vecpnt + 64, vect05[vecpnt]);
delay(5);
Serial.print(" . ");
}
for (byte vecpnt = 0; vecpnt < 0x0010; vecpnt++)
{
EEPROM.write(vecpnt + 80, vect06[vecpnt]);
delay(5);
Serial.print(" . ");
}
for (byte vecpnt = 0; vecpnt < 0x0010; vecpnt++)
{
EEPROM.write(vecpnt + 96, vect07[vecpnt]);
delay(5);
Serial.println(" . ");
}
for (byte vecpnt = 0; vecpnt < 0x000E; vecpnt++)
{
EEPROM.write(vecpnt + 112, vect08[vecpnt]);
delay(5);
Serial.println(" . ");
}
}
void writeStrings()
{
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 128, text01[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 144, text02[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 160, text03[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 176, text04[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 192, text05[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 208, text06[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 224, text07[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 240, text08[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 256, text09[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 256 + 16, text10[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 256 + 32, text11[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 256 + 48, text12[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 256 + 64, text13[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 256 + 80, text14[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 256 + 96, text15[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 256 + 112, text16[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 256 + 128, text17[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 256 + 144, text18[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 256 + 160, text19[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 256 + 176, text20[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 256 + 192, text21[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 256 + 208, text22[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 256 + 224, text23[txtpnt]);
delay(5);
Serial.print(" . ");
}
for (byte txtpnt = 0; txtpnt < 0x0010; txtpnt++)
{
EEPROM.write(txtpnt + 256 + 240, text24[txtpnt]);
delay(5);
Serial.println(" . ");
}
}
void loop() {
if (once == 0)
{
Serial.print("EEPROM writing starts in 3 seconds ");
delay(1000);
Serial.print(" . ");
delay(1000);
Serial.print(" . ");
delay(1000);
Serial.println(" . EEPROM writing starts now");
delay(100);
Serial.print("Writing vectors ");
delay(100);
writeVectors();
Serial.print("Writing strings ");
delay(100);
writeStrings();
Serial.println("Writing done!");
once = 1;
}
while (once != 0) {
Serial.println("Loading text strings to internal EEPROM is done. You can load the main program now.");
delay(10000);
}
}
Fotnot: Fast jag använder excel ganska mycket blir jag allt emellanåt ändå förvånad över HUR användbart det i själva verket är!
Jag brukar ofta använda excel för att skapa G-kod till CNC-fräsen också. Speciellt då när man behöver göra någon geometrisk figur är det enklast att låta excel räkna koordinaterna och skapa koden, och så bara Copy och Paste till en textfil, och så kör man.
MYCKET användbart!