Maskinistens Twitter-flöde  Stöd Maskinisten via Patreon  Maskinistens nätverk - information på svenska  Maskinistens nätverk - information på finska  Maskinistens nätverk - information på norska  Maskinistens nätverk - information på danska  Maskinistens nätverk - information på isländska
Forumindex

ForumindexForumindexMaskin-databasFotoalbumKalender-informationKöp & SäljDownloadsLexikonKontaktregisterCrimedatbase

Åkerman-register
Visa forum för mobila enheter

ForumindexVerkstadsforumAllmänt[Allmänt] El/elektronik

Försöker lära mej Arduino

377 inlägg • Sida 11 av 26
Diskutera el/elektronik i allmänhet här

Janson1

#151 » 00:08:26, 21-01-2019
  • Överför markerat ord till lexikonet

Dom här millis&micros är bara 0 precis vid start, en sekund senare är millis 1000 och Micros 1000000. Så fortsätter det i ca 52 dygn resp ca 70 minuter, sedan börjar det om på nytt... Jag tror inte man behöver tilldela det 0 men de ser bättre ut att ange 0. (prova att inte sätta 0 och se om det blir någon skillnad)

1 person gillar det här inlägget.
Janson1
Fler än 500 inlägg
 
Blev medlem: 12:50:52, 21-03-2010
Ort: Mark Västra Götaland
Sverige
Maskintyp: Grävmaskin (larvburen)
Maskin: Bobcat X125 (2.5 ton)
Case CK-15 (Kubota kx41)
+ div. flygplan, helikoptrar
Senaste renoveringsobjekten:
Piper PA-24 Comanche från -64 (flyger nu)
Ferguson Grålle/VW diesel 1952/2002 (rullar nu)
10 Kw solcellsanläggning som surrar och går.
Försöka få till ett Ö-drift elsystem utifall att...



sm6ywk

#152 » 00:29:07, 21-01-2019
  • Överför markerat ord till lexikonet

Variabeln previousTime är global och initieras till värdet 0 i setup(), så den är 0 första varvet i loopen.
Det är dock okej, prova att skriva värdet från milis det första du gör i loop() till serieporten så kommer du se att jämfört med 600000 så är det nära noll.
Annars är det en bra och korrekt iakttagelse att man gör annorlunda första varvet.
Det är givetvis något man bör akta sig för då risken finns att man i ett senare skede kastar in någon funktion som tar lång tid innan man börjar själva ”timglasfunktionen” och då blir det fel!
Men i detta enkla fallet gör det inget.

1 person gillar det här inlägget.
sm6ywk
Fler än 100 inlägg
 
Blev medlem: 12:40:41, 10-03-2013
Ort: Ale kommun, Västra Götaland
Maskintyp: Traktor
Maskin: BM 650

AN (trådstartaren)

#153 » 00:36:51, 21-01-2019
  • Överför markerat ord till lexikonet

led++ i loopen, fungerar den bara om man använder en for-funktion i setup?
I setup skulle man väl ist för en for-funktion kunna skriva lysdioderna; men skulle led++ fungera i loopen då?
AN
Fler än 500 inlägg
 
Blev medlem: 21:19:02, 09-12-2009
Ort: Värmland
Sverige

sm6ywk

#154 » 00:44:00, 21-01-2019
  • Överför markerat ord till lexikonet

Jag förstår inte vad du menar med skriva lysdioderna?
led++ kan du använda var som helst, det är samma sak som att skriva led=led+1;

1 person gillar det här inlägget.
sm6ywk
Fler än 100 inlägg
 
Blev medlem: 12:40:41, 10-03-2013
Ort: Ale kommun, Västra Götaland
Maskintyp: Traktor
Maskin: BM 650

AN (trådstartaren)

#155 » 00:55:05, 21-01-2019
  • Överför markerat ord till lexikonet

sm6ywk skrev:Jag förstår inte vad du menar med skriva lysdioderna?
led++ kan du använda var som helst, det är samma sak som att skriva led=led+1;


Vet inte vad om hände med texten.
Det skulle stå:
led++ i loopen, fungerar den bara om man använder en for-funktion i setup?
I setup skulle man väl ist för en for-funktion kunna skriva in lysdioderna som OUTPUT sex gånger ist för att använda en for-funktion.
Men skulle led++ fungera i loopen då?

Trodde led++ var kopplat till for-funktionen.
AN
Fler än 500 inlägg
 
Blev medlem: 21:19:02, 09-12-2009
Ort: Värmland
Sverige

sm6ywk

#156 » 01:04:19, 21-01-2019
  • Överför markerat ord till lexikonet

Aha, nu hänger jag med på frågan.
Man kan som du säger skriva en rad för varje utgång istället för for-loopen, det blir exakt samma sak.
Det kommer fortfarande gå att skriva led++, som sagt det är inget annat än ett kortare sätt att skriva led =led+1;
Det är vanligt att man använder led++ (eller något annat variabelnamn) i en for-loop, men det är inte bundet till for på något sätt!

1 person gillar det här inlägget.
sm6ywk
Fler än 100 inlägg
 
Blev medlem: 12:40:41, 10-03-2013
Ort: Ale kommun, Västra Götaland
Maskintyp: Traktor
Maskin: BM 650

Janson1

#157 » 07:53:18, 21-01-2019
  • Överför markerat ord till lexikonet

Man kan tydligen skriva så här med:
int sprpins [] ={11,10,9,8}; // till spridarna (blir aktivt höga)
Där [] =[pekare] (De är jag som valt ordet pekare då jag bara vill ha en utgång aktiv åt gången)
pinMode(sprpins[pekare], OUTPUT); // spridarutgångar satta som arrey (11,10,9,8)
Och sen använda " pekare ++; " (eller " pekare = pekare + pekare " i detta fallet)
edit: pekare är deklarerad som en byte, dvs: byte = pekare = 0; i detta fall vill jag säkerställa ett fast värde, kunde lika gärna gett den 1 då de är mer logiskt = cyl 1...

1 person gillar det här inlägget.
Janson1
Fler än 500 inlägg
 
Blev medlem: 12:50:52, 21-03-2010
Ort: Mark Västra Götaland
Sverige
Maskintyp: Grävmaskin (larvburen)
Maskin: Bobcat X125 (2.5 ton)
Case CK-15 (Kubota kx41)
+ div. flygplan, helikoptrar
Senaste renoveringsobjekten:
Piper PA-24 Comanche från -64 (flyger nu)
Ferguson Grålle/VW diesel 1952/2002 (rullar nu)
10 Kw solcellsanläggning som surrar och går.
Försöka få till ett Ö-drift elsystem utifall att...

sm6ywk

#158 » 09:20:43, 21-01-2019
  • Överför markerat ord till lexikonet

Ordet pekare är lite illa valt då det faktiskt är ett viktigt begrepp i C-språk!
Arrayer är väldigt närbesläktade med pekare, men det sättet som du skriver är lite missvisande.
Det är alltså bara ordet jag anmärker på, programmeringstänket är det inget fel alls på!
Men du har helt rätt! Man kan lika gärna skapa en lista och använda sig av den för att få en logisk ordning, ditt exempel är ju klockrent då utgångarnas nummer kommer i en konstig ordning.
pekare++ är samma sak som pekare=pekare+1 och inget annat.
Det du skriver är samma som
Kod: Markera allt
int sprpins[4]; //Deklarera arrayen sprpins som är av typen int.
                      //En array är som en lista, i detta fallet av "int:ar"
                      //"Listan" består av element, varje element har en plats i arrayen, ett index
                      //tänkbar förbättring hade varit att använda variabeltypen uint_8t eller byte för att spara minne
sprpins[0]=11; //Ge det första elementet ett värde, observera att det första elementet har index 0
sprpins[1]=10; //Ge det andra elementet ett värde, index =1
sprpins[2]=9;  //Ge det tredje elementet ett värde
sprpins[3]=8;  //Ge det fjärde elementet ett värde
int i = 0;         //Skapa en index-variabel, denna används för att indexera arrayen, alltså välja vilket element man vill behandla.
pinMode(sprpins[i], OUTPUT); //Sätt pinne nummer sprpins[i] till utgång, då i=0 är sprpins[0]=11
i++;
pinMode(sprpins[i], OUTPUT); //Sätt pinne 10 som utgång
i++;
pinMode(sprpins[i], OUTPUT); //Sätt pinne 9 som utgång
i++;
pinMode(sprpins[i], OUTPUT); //Sätt pinne 8 som utgång

I exemplet är det viktigt att inte indexera utanför intervallet [0-3], försöker man nå sprpins[4] kommer man förhoppningsvis få kompileringsfel. Får man inte det kan man få vad som helst för värde. Det finns tillfällen då det är mycket praktiskt att man kan fortsätta läsa så, t.ex. om man ska läsa binära filer. Men dit är det en bit kvar!
Jag brukar säga att när man programmerar C så är fördelen att programmet gör exakt som man säger, nackdelen är att programmet gör exakt som man säger!
Hoppas jag inte rörde till något nu!

1 person gillar det här inlägget.
sm6ywk
Fler än 100 inlägg
 
Blev medlem: 12:40:41, 10-03-2013
Ort: Ale kommun, Västra Götaland
Maskintyp: Traktor
Maskin: BM 650

Towil

#159 » 09:26:13, 21-01-2019
  • Överför markerat ord till lexikonet

Värt att tänka på att ++a och a++ beter sig lite olika. Om det spelar någon roll beror på var man använder det.
++a öka först, använd sedan.
a++ använd först, öka sedan.

2 personer gillar det här inlägget.
Användarvisningsbild
Towil
Moderator
Moderator
 
Blev medlem: 20:00:40, 18-08-2007
Ort: Nybro
Sverige

AN (trådstartaren)

#160 » 10:39:06, 21-01-2019
  • Överför markerat ord till lexikonet

I loopen i timglaskoden, inlägg 148 så finns ju denna if:'
if (led == 7){}
Men den har ju inget i klammerparantesen?
Det som händer om if är sant, skulle inte det så inom klammerparanteserna?
AN
Fler än 500 inlägg
 
Blev medlem: 21:19:02, 09-12-2009
Ort: Värmland
Sverige

Janson1

#161 » 21:12:09, 21-01-2019
  • Överför markerat ord till lexikonet

Ojdå, nu såg jag mitt fel... ang pekare = pekare +1; och som sagt var inget annat! Bra du såg detta sm6ywk...
Jag skulle ju kunna byta ut pekare mot visare, ja det får det nog bli!

1 person gillar det här inlägget.
Janson1
Fler än 500 inlägg
 
Blev medlem: 12:50:52, 21-03-2010
Ort: Mark Västra Götaland
Sverige
Maskintyp: Grävmaskin (larvburen)
Maskin: Bobcat X125 (2.5 ton)
Case CK-15 (Kubota kx41)
+ div. flygplan, helikoptrar
Senaste renoveringsobjekten:
Piper PA-24 Comanche från -64 (flyger nu)
Ferguson Grålle/VW diesel 1952/2002 (rullar nu)
10 Kw solcellsanläggning som surrar och går.
Försöka få till ett Ö-drift elsystem utifall att...

AN (trådstartaren)

#162 » 19:26:45, 22-01-2019
  • Överför markerat ord till lexikonet

Några frågor till på timglaskoden :smile:
Koden från inlägg 148.
Första raderna på Void loop är jag med på.
Men om man ser från första if komandot.

if (led == 7), då konstaterar man ju att alla sex led är tända, så då ska väl programmet stoppa? Alla led forsätter iaf att lysa tills man vickar på den.
Jag kan inte riktigt se vad för kommando som ges om if (led == 7)



Hela det här stycket nedan,säger väl att, om man vickat på den så att tilt-switchen, ändrat ingåmg 8 från hög till låg eller vice versa, så sätts alla LED till LOW. previousTime, ändras till currentTime, eftersom räkningen ska börja om.
prevSwitchState, sätts till aktuellt switchstate, så att den kan kolla när det värdes ändras igen.

Kod: Markera allt
switchState = digitalRead(switchPin);
 
  if (switchState != prevSwitchState){
    for(int x= 2; x[code]<8; x++){
     digitalWrite (x, LOW);
    }
    led=2;
    previousTime=currentTime;
    prevSwitchState=switchState;
  }


Eller körs de två sista raderna i koden ovan, även on IF-satsen inte ska köras? :klia:
AN
Fler än 500 inlägg
 
Blev medlem: 21:19:02, 09-12-2009
Ort: Värmland
Sverige

tortap

#163 » 20:08:42, 24-01-2019
  • Överför markerat ord till lexikonet

Nej de två sista raderna är innanför ifsatsen switchstate så de körs inte.

Kod: Markera allt
 if (led == 7){}


Den if led == 7 gör aldrig någonting.

1 person gillar det här inlägget.
tortap
Fler än 500 inlägg
 
Blev medlem: 20:17:31, 08-04-2016
Ort: Norrland
Maskin: Volvo BM 4300, MF 30, Maho MH300C

AN (trådstartaren)

#164 » 21:09:01, 24-01-2019
  • Överför markerat ord till lexikonet

tortap skrev:Nej de två sista raderna är innanför ifsatsen switchstate så de körs inte.

Detta ser man genom att hålla reda på paranteserna eller?
Alltså vad som hör till if-satsen?


tortap skrev:
Kod: Markera allt
 if (led == 7){}

Den if led == 7 gör aldrig någonting.

Om den aldrig gör något, varför är den med?
AN
Fler än 500 inlägg
 
Blev medlem: 21:19:02, 09-12-2009
Ort: Värmland
Sverige

Towil

#165 » 21:11:39, 24-01-2019
  • Överför markerat ord till lexikonet

Kod: Markera allt
  if (currentTime - previousTime > interval) { previousTime = currentTime;
  digitalWrite(led, HIGH);
  led++;

  if (led == 7){}
  }
  switchState = digitalRead(switchPin);


Kolla så att det inte är fel i koden.
Det skall inte vara så här?

if (led == 7){
switchState = digitalRead(switchPin);
}

för if (led == 7){} gör ju inget.

1 person gillar det här inlägget.
Användarvisningsbild
Towil
Moderator
Moderator
 
Blev medlem: 20:00:40, 18-08-2007
Ort: Nybro
Sverige


Återgå till [Allmänt] El/elektronik

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 2 gäster



Älmeboda Maskinservice

OilQuick

TK Traktordelar

Klaravik

Crazyride

Bra Verktyg

Motrab

Engcon

Scandcut

Astrak

Olsson Parts

Nya och begagnade
truckar på vstruck.se