Hur använda Arduino UNO för att sampla och lägga i databas?
- Spisblinkaren
- EF Sponsor
- Inlägg: 12990
- Blev medlem: 13 december 2012, 21:41:43
Re: Hur använda Arduino UNO för att sampla och lägga i datab
Ja, jag är 100% säker.
Satte nämligen en 1000uF rätt över matningen tidigare och det hjälpte inte.
Dessutom är det tämligen omöjligt att hur man än gör få dom stora skillnaderna jag ramat in.
Jag menar, det är ju liksom störningar på 300LSB/1024 a' 5V ref dvs 1,5V!!
Jag begriper inte det här!
Observera också att det är andra UNO som beter sig på precis samma sätt (>20LSB avvikelse vid upprepad sampling iaf).
MVH/Roger
Satte nämligen en 1000uF rätt över matningen tidigare och det hjälpte inte.
Dessutom är det tämligen omöjligt att hur man än gör få dom stora skillnaderna jag ramat in.
Jag menar, det är ju liksom störningar på 300LSB/1024 a' 5V ref dvs 1,5V!!
Jag begriper inte det här!
Observera också att det är andra UNO som beter sig på precis samma sätt (>20LSB avvikelse vid upprepad sampling iaf).
MVH/Roger
- Spisblinkaren
- EF Sponsor
- Inlägg: 12990
- Blev medlem: 13 december 2012, 21:41:43
Re: Hur använda Arduino UNO för att sampla och lägga i datab
Såhär ser min output ut om jag får bestämma.
Jag har skapat ett gäng variabler istället för "konstiga" funktionsanrop.
Meningen med variablerna är att var och en skall hamna i en separat kolumn i Excel (in my dreams
)
Endast numeriska värden i output är av intresse (så "kg" går bort).
Men strukturen är precis den jag vill ha.
Dvs värde, år, dag, timma, minut, sekund i var sin kolumn.
Frågan är nu "bara" hur jag åstadkommer detta vid skrivning till SD.
Har ingensomhelst susning
MVH/Roger
Jag har skapat ett gäng variabler istället för "konstiga" funktionsanrop.
Meningen med variablerna är att var och en skall hamna i en separat kolumn i Excel (in my dreams

Endast numeriska värden i output är av intresse (så "kg" går bort).
Men strukturen är precis den jag vill ha.
Dvs värde, år, dag, timma, minut, sekund i var sin kolumn.
Frågan är nu "bara" hur jag åstadkommer detta vid skrivning till SD.
Har ingensomhelst susning

MVH/Roger
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
- Spisblinkaren
- EF Sponsor
- Inlägg: 12990
- Blev medlem: 13 december 2012, 21:41:43
Re: Hur använda Arduino UNO för att sampla och lägga i datab
Jag tackar dig j.po för den informationen.
Om man struntar i menlös dialog-information som t.ex att läsning lyckats eller inte så är det inte många rader kod som behövs.
Det mest intressanta för mig som amatör är att allt verkar behöva gå via monitorn.
Så man måste alltså läsa in värden till monitorn (från A/D & RTC) för att sen kunna skriva till SD (SD.open+SD.write+SD.close).
Själva värdena behöver jag inte läsa då jag helt enkelt flyttar SD till datorn.
Där är tanken att värdena från SD skall kunna läsas av Excel eller Wordpad.
Hur mycket är jag ute och cyklar nu?
MVH/Roger
Om man struntar i menlös dialog-information som t.ex att läsning lyckats eller inte så är det inte många rader kod som behövs.
Det mest intressanta för mig som amatör är att allt verkar behöva gå via monitorn.
Så man måste alltså läsa in värden till monitorn (från A/D & RTC) för att sen kunna skriva till SD (SD.open+SD.write+SD.close).
Själva värdena behöver jag inte läsa då jag helt enkelt flyttar SD till datorn.
Där är tanken att värdena från SD skall kunna läsas av Excel eller Wordpad.
Hur mycket är jag ute och cyklar nu?

MVH/Roger
- Spisblinkaren
- EF Sponsor
- Inlägg: 12990
- Blev medlem: 13 december 2012, 21:41:43
Re: Hur använda Arduino UNO för att sampla och lägga i datab
Nu har jag dock behövt använda "menlös dialoginformation" 
Jag får nämligen inte initialiseringen av SD att fungera.
Det är nåt med Chip Select (Pin 4) som inte verkar fungera (ty "Initialization failed").
Alternativt är SD oformaterad (vilket jag dock starkt betvivlar).
Kommer studera Adafruit's manual lite närmare.
MVH/Roger
PS
Idag upptäckte jag att den splirrans nya potentiometern som simulerar givaren är kass.
Jag uppmätte stundtals uppemot 20M Ohm över löpare relativt GND.
Dessutom satte jag min DVM (Ri>10M) som övervakare och efter att jag applicerat 22uF så sjönk, och sjönk spänningen dvs det var i princip avbrott i potentiometern.
Jag tycker jag är rent ut sagt en sopa som inte upptäckt det tidigare.
Å andra sidan, splirrans ny potentiometer...
Jag kan dock meddela att efter 22uF beter den sig bättre.
Får köpa ny pot i veckan.

Jag får nämligen inte initialiseringen av SD att fungera.
Det är nåt med Chip Select (Pin 4) som inte verkar fungera (ty "Initialization failed").
Alternativt är SD oformaterad (vilket jag dock starkt betvivlar).
Kommer studera Adafruit's manual lite närmare.
MVH/Roger
PS
Idag upptäckte jag att den splirrans nya potentiometern som simulerar givaren är kass.
Jag uppmätte stundtals uppemot 20M Ohm över löpare relativt GND.
Dessutom satte jag min DVM (Ri>10M) som övervakare och efter att jag applicerat 22uF så sjönk, och sjönk spänningen dvs det var i princip avbrott i potentiometern.
Jag tycker jag är rent ut sagt en sopa som inte upptäckt det tidigare.
Å andra sidan, splirrans ny potentiometer...
Jag kan dock meddela att efter 22uF beter den sig bättre.
Får köpa ny pot i veckan.
Kod: Markera allt
#include <SD.h>
File myFile;
void setup()
{
Serial.begin(57600);
pinMode(10, OUTPUT);
//debug
Serial.print("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
//debug
myFile = SD.open("test.txt", FILE_WRITE);
if (myFile) {
Serial.print("Writing to test.txt...");
myFile.println("testing 1, 2, 3.");
myFile.close();
}
myFile = SD.open("test.txt");
if (myFile) {
Serial.println("test.txt:");
while (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
}
}
void loop()
{
Serial.println("test");
delay(3000);
}
Re: Hur använda Arduino UNO för att sampla och lägga i datab
känns inte som om programmet själv skapar filen test.txt, du måste kanske ha en fil som heter test.txt på kortet från start
- Spisblinkaren
- EF Sponsor
- Inlägg: 12990
- Blev medlem: 13 december 2012, 21:41:43
Re: Hur använda Arduino UNO för att sampla och lägga i datab
Jo, programmet skapar dom filerna.
Nedan följer beviset.
Vad jag hade gjort fel var att jag satt chipSelect till 4 (default) utan att förstå varför.
Arduino i sig använder pinne 4 men Adafruit's logger-shield använder pinne 10.
Så jag chansade och ändrade en synlig fyra i nån funktion kallad SD.begin() enligt ovan och då blev det att fungera!!
Fast innan jag fick det att fungera läste jag alltså i Adafruit's manual och jag fick tacksam hjälp därifrån i form av exempelkod som bara checkar SD-status. Filen kallas Cardinfo som finns färdig i Arduino-miljön vilket jag sparade som SD_Cardinfo för att ha som egen lek-kopia (bifogar den också).
Så först ändrade jag CS, sen laddade jag ovanstående program (skapade totalt 5st test-filer) och kollade på monitorn där "testing 1, 2, 3." syntes och sen laddade jag SD_Cardinfo och fick upp nedanstående resultat till min stora glädje.
Dock är jag mycket snopen över tiderna för filen. Verkar vara rena dummys
Jag tror det har att göra med variabeln/funktionen (whatever
) FILE_WRITE som alltså skickas med öppnandet/skapandet av testfilen (SD.open).
Förutom det problemet är jag just nu överlycklig över mina små, men inte obetydliga, framgångar!!
MVH/Roger
PS
Jag har också satt allt till 9600 baud. Att använda andra baud-rate fungerar men det är irriterande när baud-rate defaultar till 9600 vid uppstart av utvecklingsmiljön och man inte har det i alla sina program...
Nedan följer beviset.
Vad jag hade gjort fel var att jag satt chipSelect till 4 (default) utan att förstå varför.
Arduino i sig använder pinne 4 men Adafruit's logger-shield använder pinne 10.
Så jag chansade och ändrade en synlig fyra i nån funktion kallad SD.begin() enligt ovan och då blev det att fungera!!
Fast innan jag fick det att fungera läste jag alltså i Adafruit's manual och jag fick tacksam hjälp därifrån i form av exempelkod som bara checkar SD-status. Filen kallas Cardinfo som finns färdig i Arduino-miljön vilket jag sparade som SD_Cardinfo för att ha som egen lek-kopia (bifogar den också).
Så först ändrade jag CS, sen laddade jag ovanstående program (skapade totalt 5st test-filer) och kollade på monitorn där "testing 1, 2, 3." syntes och sen laddade jag SD_Cardinfo och fick upp nedanstående resultat till min stora glädje.
Dock är jag mycket snopen över tiderna för filen. Verkar vara rena dummys

Jag tror det har att göra med variabeln/funktionen (whatever

Förutom det problemet är jag just nu överlycklig över mina små, men inte obetydliga, framgångar!!
MVH/Roger
PS
Jag har också satt allt till 9600 baud. Att använda andra baud-rate fungerar men det är irriterande när baud-rate defaultar till 9600 vid uppstart av utvecklingsmiljön och man inte har det i alla sina program...
Kod: Markera allt
/*
SD card test
This example shows how use the utility libraries on which the'
SD library is based in order to get info about your SD card.
Very useful for testing a card when you're not sure whether its working or not.
The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
** CS - depends on your SD card shield or module.
Pin 4 used here for consistency with other Arduino examples
created 28 Mar 2011
by Limor Fried
modified 9 Apr 2012
by Tom Igoe
*/
// include the SD library:
#include <SD.h>
// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;
// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
const int chipSelect = 10;
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.print("\nInitializing SD card...");
// On the Ethernet Shield, CS is pin 4. It's set as an output by default.
// Note that even if it's not used as the CS pin, the hardware SS pin
// (10 on most Arduino boards, 53 on the Mega) must be left as an output
// or the SD library functions will not work.
pinMode(10, OUTPUT); // change this to 53 on a mega
// we'll use the initialization code from the utility libraries
// since we're just testing if the card is working!
if (!card.init(SPI_HALF_SPEED, chipSelect)) {
Serial.println("initialization failed. Things to check:");
Serial.println("* is a card is inserted?");
Serial.println("* Is your wiring correct?");
Serial.println("* did you change the chipSelect pin to match your shield or module?");
return;
} else {
Serial.println("Wiring is correct and a card is present.");
}
// print the type of card
Serial.print("\nCard type: ");
switch(card.type()) {
case SD_CARD_TYPE_SD1:
Serial.println("SD1");
break;
case SD_CARD_TYPE_SD2:
Serial.println("SD2");
break;
case SD_CARD_TYPE_SDHC:
Serial.println("SDHC");
break;
default:
Serial.println("Unknown");
}
// Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
if (!volume.init(card)) {
Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
return;
}
// print the type and size of the first FAT-type volume
uint32_t volumesize;
Serial.print("\nVolume type is FAT");
Serial.println(volume.fatType(), DEC);
Serial.println();
volumesize = volume.blocksPerCluster(); // clusters are collections of blocks
volumesize *= volume.clusterCount(); // we'll have a lot of clusters
volumesize *= 512; // SD card blocks are always 512 bytes
Serial.print("Volume size (bytes): ");
Serial.println(volumesize);
Serial.print("Volume size (Kbytes): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.print("Volume size (Mbytes): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.println("\nFiles found on the card (name, date and size in bytes): ");
root.openRoot(volume);
// list all files in the card with date and size
root.ls(LS_R | LS_DATE | LS_SIZE);
}
void loop(void) {
}
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
- Spisblinkaren
- EF Sponsor
- Inlägg: 12990
- Blev medlem: 13 december 2012, 21:41:43
Re: Hur använda Arduino UNO för att sampla och lägga i datab
Två menlösa bilder till sen skall det bli allvar 
Den första visar alltså filen test.txt öppnad med Wordpad (efter att jag flyttat SD till datorn
).
Den har exakt samma disponering som "Monitor-filen" ovan (möjligtvis med undantag för en skum extra tredje rad).
Den andra bilden föreställer min virade och primitiva, men fina, LED-modul "By Night"
Kameran ljuger dock lite för det är ännu vackrare (och tydligare, obs) IRL.
MVH/Roger
PS
Nu ska jag koncentrera mig på att generera riktiga data.

Den första visar alltså filen test.txt öppnad med Wordpad (efter att jag flyttat SD till datorn

Den har exakt samma disponering som "Monitor-filen" ovan (möjligtvis med undantag för en skum extra tredje rad).
Den andra bilden föreställer min virade och primitiva, men fina, LED-modul "By Night"

Kameran ljuger dock lite för det är ännu vackrare (och tydligare, obs) IRL.
MVH/Roger
PS
Nu ska jag koncentrera mig på att generera riktiga data.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
- Spisblinkaren
- EF Sponsor
- Inlägg: 12990
- Blev medlem: 13 december 2012, 21:41:43
Re: Hur använda Arduino UNO för att sampla och lägga i datab
Okej, nu börjar jag få ordning på grejerna 
Eller vad sägs om dom här bilderna?
Jag har alltså lekt lite med givar-ratten för att simulera faktisk patient.
Sen har jag stoppat lagringen till SD genom att trycka på knappen "New User" vilket genererar en "Closing File"-funktion.
Därefter har jag tagit ur SD ur UNO och stoppat in det i datorn.
Sen har jag dubbelklickat på filen (varvid min standardläsare Wordpad öppnar den).
Sen har jag öppnat min fantastiska Excel-97
I Excel har jag sedan försökt öppna text-filen.
Excel klagar inte så högljutt utan ber mig bara definiera lite typ tabbar.
Excel är dock så smart att den fattar mina tabbar så det är bara att klicka OK (för att skryta lite hade jag faktiskt det här på känn
)
Sen får jag alltså upp mina värden i Excel
Där skriver jag manuellt in headerna (som den annars får problem med).
Slutligen kastar jag bara om värde-kolumnen så att den hamnar närmast TILL HÖGER om sekunder och plottar grejerna.
Fantastiskt, va
MVH/Roger

Eller vad sägs om dom här bilderna?
Jag har alltså lekt lite med givar-ratten för att simulera faktisk patient.
Sen har jag stoppat lagringen till SD genom att trycka på knappen "New User" vilket genererar en "Closing File"-funktion.
Därefter har jag tagit ur SD ur UNO och stoppat in det i datorn.
Sen har jag dubbelklickat på filen (varvid min standardläsare Wordpad öppnar den).
Sen har jag öppnat min fantastiska Excel-97

I Excel har jag sedan försökt öppna text-filen.
Excel klagar inte så högljutt utan ber mig bara definiera lite typ tabbar.
Excel är dock så smart att den fattar mina tabbar så det är bara att klicka OK (för att skryta lite hade jag faktiskt det här på känn

Sen får jag alltså upp mina värden i Excel

Där skriver jag manuellt in headerna (som den annars får problem med).
Slutligen kastar jag bara om värde-kolumnen så att den hamnar närmast TILL HÖGER om sekunder och plottar grejerna.
Fantastiskt, va

MVH/Roger
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Hur använda Arduino UNO för att sampla och lägga i datab
Vilken utveckling sedan första inlägget. 

- Spisblinkaren
- EF Sponsor
- Inlägg: 12990
- Blev medlem: 13 december 2012, 21:41:43
Re: Hur använda Arduino UNO för att sampla och lägga i datab
Jag tackar och bockar!nifelheim skrev:grattis
MVH/Roger
- Spisblinkaren
- EF Sponsor
- Inlägg: 12990
- Blev medlem: 13 december 2012, 21:41:43
Re: Hur använda Arduino UNO för att sampla och lägga i datab
Jag tackar och bockar för detta erkännande!orvar-e skrev:Vilken utveckling sedan första inlägget.
MVH/Roger
- Spisblinkaren
- EF Sponsor
- Inlägg: 12990
- Blev medlem: 13 december 2012, 21:41:43
Re: Hur använda Arduino UNO för att sampla och lägga i datab
Vad jag gillar gamla grejer och gamla principer!!
Jag sitter alltså här och försöker få ordning på min UNO.
Jag får hjälp av Arduinos mycket trevliga forum (och av min kompis RBM).
Experterna där talar om för mig hur jag ska göra.
Man kan alltså inte rätt upp och ner ändra "standardtidsinställningen" som är den som Windows sorterar efter.
Däremot kan man manipulera filens namn så att det får en tidsstämpel.
Det är sedan nästan ännu enklare att sortera filerna efter det.
Men nu till kråksången.
I Monitorn kunde jag se att jag lyckats tidstämpla filnamnet enligt YYYYMMDD_HHMMSS.
Vad jag däremot inte kunde se var vart filen tog vägen nånstans
Allt verkade stämma men när jag sniffar SD finns filerna helt enkelt inte med.
Jag fattade ingenting men lyckades efter mycket trevande komma fram till att anledningen till att filerna inte fanns på SD var helt enkelt att filnamnen var för långa
Det visade sig nämligen att de inte kunde vara längre än 8 tecken.
Vilket var standard när jag först började greja med datorer
Jag gillar sånt här.
Enkelt och utan komplikationer.
Jag blir mer och mer imponerad över hur bra Arduino är!
Det är faktiskt mycket enkelt upplagt och dessutom med mycket lite luddig C++.
Min tidsstämpel har alltså 15 tecken.
Måste krympa dom till 8.
Vad sägs om: DDHHMMSS där man inte kan vänta längre än en månad för att analysera resultaten?
MVH/Roger
PS
Sekunder bör stå där för det kan hända att en annan användare vill använda enheten inom en minut från det den första användaren använt den.
Jag sitter alltså här och försöker få ordning på min UNO.
Jag får hjälp av Arduinos mycket trevliga forum (och av min kompis RBM).
Experterna där talar om för mig hur jag ska göra.
Man kan alltså inte rätt upp och ner ändra "standardtidsinställningen" som är den som Windows sorterar efter.
Däremot kan man manipulera filens namn så att det får en tidsstämpel.
Det är sedan nästan ännu enklare att sortera filerna efter det.
Men nu till kråksången.
I Monitorn kunde jag se att jag lyckats tidstämpla filnamnet enligt YYYYMMDD_HHMMSS.
Vad jag däremot inte kunde se var vart filen tog vägen nånstans

Allt verkade stämma men när jag sniffar SD finns filerna helt enkelt inte med.
Jag fattade ingenting men lyckades efter mycket trevande komma fram till att anledningen till att filerna inte fanns på SD var helt enkelt att filnamnen var för långa

Det visade sig nämligen att de inte kunde vara längre än 8 tecken.
Vilket var standard när jag först började greja med datorer

Jag gillar sånt här.
Enkelt och utan komplikationer.
Jag blir mer och mer imponerad över hur bra Arduino är!
Det är faktiskt mycket enkelt upplagt och dessutom med mycket lite luddig C++.
Min tidsstämpel har alltså 15 tecken.
Måste krympa dom till 8.
Vad sägs om: DDHHMMSS där man inte kan vänta längre än en månad för att analysera resultaten?
MVH/Roger
PS
Sekunder bör stå där för det kan hända att en annan användare vill använda enheten inom en minut från det den första användaren använt den.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Hur använda Arduino UNO för att sampla och lägga i datab
Det är väl 8.3 tecken, alltså 8 tecken följt av en punkt samt 3 ytterligare tecken.
Filerna kanske inte måste sluta med .txt?
Kanske 3 siffror i stället motsvarande vilken dag på året det är.
Då borde man kunna få med år med 2 siffror, 3 siffror för dag på året och sedan resterande 6 siffror för tiden.
Idag är det 1:a april 2015 vilket motsvarar dag nr 091.
http://disc.gsfc.nasa.gov/julian_calendar.shtml
Klockan är 11:03:50
Filnamn: 15091110.350
Nackdel är att man inte får med århundradet.
Filerna kanske inte måste sluta med .txt?
Kanske 3 siffror i stället motsvarande vilken dag på året det är.
Då borde man kunna få med år med 2 siffror, 3 siffror för dag på året och sedan resterande 6 siffror för tiden.
Idag är det 1:a april 2015 vilket motsvarar dag nr 091.
http://disc.gsfc.nasa.gov/julian_calendar.shtml
Klockan är 11:03:50
Filnamn: 15091110.350
Nackdel är att man inte får med århundradet.