Archive for the ‘c-kode’ Category
gratis source code online
sourcecodeonline.com
asp tutorials online
virkelig cool site med gratis kode til alle mulige sprog, anbefales

solar tracker med arduino
Okay, så blev jeg inspireret til at kikke lidt på en simpel solartracker og har lavet lidt test kode til arduino.
Inspirationen var en lille video på youtube, en gut der bruger en gammel kontor stol som base for hans solar tracker.

Det er klart at mekanikken skal komme fra noget man kan få fat i meget billigt eller gratis og så added lidt her og der fra feks biler, en visker motor måske, se denne løsning på mekanikken, simpel og genial
Koden til mit lille arduino solar tracker eksperiment er lavet med to solceller fra to skrottede solarhave lamper, og en standard freeduino fra nuelectronics.
Ikke alt kode i program bruges.
Filmen her viser hvad program stumpen kan:
/* * solar tracker first test program * Home: http://s-educator.org * 290809 */ int ledPin13 = 13; // LED connected to digital pin 13 on arduino board int ledPin2 = 2; // red LED connected to digital pin 2 int ledPin3 = 3; // yellow LED connected to digital pin 3 int ledPin4 = 4; // green LED connected to digital pin 4 int ledPin5 = 5; // yellow LED connected to digital pin 5 int ledPin6 = 6; // red LED connected to digital pin 6 int ledPin7 = 7; // green D2 LED connected to digital pin 7 int lastvalue; char sensorData[10]; void setup() // run once, when the sketch starts { pinMode(ledPin2, OUTPUT); // sets the digital pin as output pinMode(ledPin3, OUTPUT); // sets the digital pin as output pinMode(ledPin4, OUTPUT); // sets the digital pin as output pinMode(ledPin5, OUTPUT); // sets the digital pin as output pinMode(ledPin6, OUTPUT); // sets the digital pin as output pinMode(ledPin7, OUTPUT); // sets the digital pin as output } void loop() // run over and over again { if ((analogRead(4) == analogRead(5)+10)) { if ((analogRead(4) <= analogRead(5)+10) && (analogRead(4)+10 >= analogRead(5))) { digitalWrite(ledPin4, HIGH); digitalWrite(ledPin5, LOW); digitalWrite(ledPin3, LOW); digitalWrite(ledPin6,LOW); digitalWrite(ledPin2, LOW); } } if (analogRead(4) > analogRead(5)+100) { digitalWrite(ledPin5, HIGH); digitalWrite(ledPin4, LOW); digitalWrite(ledPin3, LOW); digitalWrite(ledPin6,LOW); digitalWrite(ledPin2, LOW); } if (analogRead(4)+100 < analogRead(5)) { digitalWrite(ledPin3, HIGH); digitalWrite(ledPin4, LOW); digitalWrite(ledPin5, LOW); digitalWrite(ledPin6,LOW); digitalWrite(ledPin2, LOW); } if (analogRead(4) > analogRead(5)+150) { digitalWrite(ledPin6, HIGH); digitalWrite(ledPin5, LOW); digitalWrite(ledPin4, LOW); digitalWrite(ledPin3, LOW); } if (analogRead(4)+150 < analogRead(5)) { digitalWrite(ledPin2, HIGH); digitalWrite(ledPin3, LOW); digitalWrite(ledPin4, LOW); digitalWrite(ledPin5, LOW); } } // ******************************************************************************************************************************** // ***** Opsamler spænding fra analog 4 ***** // ******************************************************************************************************************************** void getcurrent(char *current) { int sign, whole; sign=false; // kommer fra gettemperatur routinen if(sign) current[0]='-'; else current[0]='+'; // analog read //sensor = 3; whole = 0; whole = analogRead(4); whole = whole; if (whole < 513) whole = 513; if (whole > 715) whole = 513; int mappedValue = map( whole, 513, 700, 0, 5000 ); // 513 svarer til 2,5 volt og 715 svarer til 25, volt + 5x187mvolt, 5000 er 5 ampere ** 700 calibreretr 230809 current[1]= (mappedValue % 10000)/1000 +'0' ; current[3]= (mappedValue % 1000)/100 +'0'; current[2]=','; current[4]= (mappedValue % 100)/10 +'0'; //whole=whole;+24; //calibrering af måling current[5]= (mappedValue % 10)+'0'; current[6] = '\0'; delay(1000UL); // delay 30 sec } // ******************************************************************************************************************************** // ***** Opsamler målt spænding 1:1 (maks 5 v) og putter data i en string (den varialen som bruges til at kalde routinen med)***** // ******************************************************************************************************************************** void getvoltage(char *voltage) { int sign, whole; //sensor = 1; sign=false; // kommer fra gettemperatur routinen if(sign) voltage[0]='-'; else voltage[0]='+'; // analog read whole = 0; whole = analogRead(0); whole = whole; // diveder med 2 ved 0 til 5 volt int mappedValue = map( whole, 0, 1023, 0, 2000 ); // voltage[1]= (mappedValue % 10000)/1000 +'0' ; voltage[2]= (mappedValue % 1000)/100 +'0'; voltage[3]=','; voltage[4]= (mappedValue % 100)/10 +'0'; //whole=whole;+24; //calibrering af måling voltage[5]= (mappedValue % 10)+'0'; voltage[6] = '\0'; // voltage[1]= (whole % 10000)/1000 +'0' ; // voltage[2]= (whole % 1000)/100 +'0'; // voltage[3]=','; // voltage[4]= (whole % 100)/10 +'0'; //whole=whole;+24; //calibrering af måling // voltage[5]= (whole % 10)+'0'; // voltage[6] = '\0'; delay(1000UL); // delay 30 sec }
ds for formula udviklings tools fra datalogic – kompiler bugs
Under arbejde med programmering af datalogic håndscanner/terminal f734, har jeg oplevet flere sære Kompiler fejl !! UPDATE 150909: det var en kode bug ;/…

1: kompiler kunne ikke finde ud af at kopiere en variabel indud strcpy( wr_record.qnty, indud );
Når jeg kopirer strengen direkte ind strcpy( wr_record.qnty, “Ind” ); virker det !! meget sær fejl….
Fejlen kom til udtryk i serial kommunikationen.., ingen logik, idet den del af programmet jeg tilskrev variablen intet har med seriel kommunikation at gøre…
2: Hvis jeg bruger gotoxy og printf ” “ inde i mellem kb_hrequsst/dec_hrequst og kb_abort/dec_abort kommer der virkeligt sære fejl..
Den fejl jeg oplevede var når jeg brugte arrows <- og ->, så slettede terminalen linie 2 og 3 i display.. Meget sært..
OBS: Det ser ud til at hvis man skriver i display samtidigt med et dec_hrequest og kb hrequest så giver det problemer med håndtering af variable. Vent med at skrive i display til kb_abort, dec_abort er esekveret




