Arduino B=A-1 ?
Arduino B=A-1 ?
Varför funkar inte detta?
for (int A=0; A<=7; A++)
{
for (int B=A-1);
Tycker att den borde fatta att jag vill att B ska vara samma som A fast ett mindre. ?
for (int A=0; A<=7; A++)
{
for (int B=A-1);
Tycker att den borde fatta att jag vill att B ska vara samma som A fast ett mindre. ?
Re: Arduino B=A-1 ?
Den andra "for()", vad är den tänkt att göra?
Hur ser hela/båda for-looparna ut?
Sen så, även om deklarering ("int") kanske även är tillåtet
i själva for-syntaxen, varför inte göra det i förväg?
Hur ser hela/båda for-looparna ut?
Sen så, även om deklarering ("int") kanske även är tillåtet
i själva for-syntaxen, varför inte göra det i förväg?
-
- EF Sponsor
- Inlägg: 970
- Blev medlem: 26 maj 2014, 12:54:35
- Ort: Karlskoga
Re: Arduino B=A-1 ?
Du får nog förklara lite mer vad du gör. Koden du visar säger ingenting. Det finns inga garantier för att B skall ha något värde efter for-satsen så vitt jag vet. Egentligen borde väl B helt gå ur scope så att du inte kommer åt den alls.
Alltså:
En bra kompilator kommer nog dessutom att ta bort allt ihop eftersom du inte gör något.
Det är inte så att du missat att du har ett ; på samma rad som for (B...
Alltså:
Kod: Markera allt
for (int A=0; A<=7; A++)
{
for (int B=A-1)
{
//Här borde B vara A-1
}
//Men här finns inga garantier.
}
Det är inte så att du missat att du har ett ; på samma rad som for (B...
Re: Arduino B=A-1 ?
Ska du verkligen ha med for i huvudtaget för B. Räcker inte bara:
int B = A-1;
int B = A-1;
Re: Arduino B=A-1 ?
OK. Jag håller på att modifiera en annan kod som jag gjorde tidigare idag.
Den ritar ut en sträck \ på en 8x8 ledmatris.
Nu ville jag använda "samma" kod för att göra "samma" sträck, men bara en punkt som åker. Därav ville jag ha en ny for loop som släcker föregående prick som den nyss var på.
Jag kom på en annan lösning som funkar:
Nu deklarerade jag A och B tidigare.
Kod: Markera allt
void loop()
{
for (int A=0; A<=7; A++)
{
lc.setLed(0,A,A,true); // Tänker LED
delay(50);
}
for (int B=7; B>=0; B--)
{
lc.setLed(0,B,B,false); // Släcker LED
delay(50);
}
}
Nu ville jag använda "samma" kod för att göra "samma" sträck, men bara en punkt som åker. Därav ville jag ha en ny for loop som släcker föregående prick som den nyss var på.
Jag kom på en annan lösning som funkar:
Nu deklarerade jag A och B tidigare.
Kod: Markera allt
void loop()
{
for (A=0; A<=7; A++)
{
lc.setLed(0,B,0,false);
lc.setLed(0,A,0,true);
B=A;
delay(40);
}
}
Re: Arduino B=A-1 ?
Om jag gör så först i programmet kommer B då alltid vara en mindre än A oavsett vad jag gör senare? Förutsatt att jag inte säger att B=xxx.Andax skrev:Ska du verkligen ha med for i huvudtaget för B. Räcker inte bara:
int B = A-1;
Re: Arduino B=A-1 ?
Its alive.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Arduino B=A-1 ?
Är det detta du försöker göra?
I ditt första försök är ju den andra for-loopen väldigt suspekt!?
Man skulle ju oxå kunna tänka sig följande:
//B1N4RY
Kod: Markera allt
void loop()
{
int B;
for (A=0; A<=7; A++)
{
B=A-1;
lc.setLed(0,B,0,false);
lc.setLed(0,A,0,true);
delay(40);
}
}
Man skulle ju oxå kunna tänka sig följande:
Kod: Markera allt
void loop()
{
for (A=0; A<=7; A++)
{
lc.setLed(0,A-1,0,false);
lc.setLed(0,A,0,true);
delay(40);
}
}
//B1N4RY
Re: Arduino B=A-1 ?
Om jag bara kunde klura ut hur man delar en video från G+ hit så skulle jag kunna visa.
Re: Arduino B=A-1 ?
Kan man inte släcka hela raden precis innan man tänder nästa punkt?
Det gör väl inget om man "släcker" de som redan är släckta om man bara vill ha en lysande punkt som flyttar sig.
Det gör väl inget om man "släcker" de som redan är släckta om man bara vill ha en lysande punkt som flyttar sig.
Re: Arduino B=A-1 ?
Det där ger ett negativt B på första körningen, så det är ingen bra lösning. I hans for-loop i början på tråden (den där B-for inte är nästlad i en A-for) finns villkoret B=7; B=>0; B--. B ska med andra ord aldrig gå under noll.B1n4ry skrev:Kod: Markera allt
for (A=0; A<=7; A++) ... B=A-1;
Re: Arduino B=A-1 ?
Är inte det där ett typiskt exempel på en lösning där man inte kan göra allt inuti loopen utan måste göra "setup" och "finish" utanför?
D.v.s. nåt i stil med (pseudokod):
Det går kanske att lösa snyggare om man skippar for-loop och gör det med en do-while istället, då kan man göra uppräkningen av index mitt i loopen istället för i början eller slutet.
D.v.s. nåt i stil med (pseudokod):
Kod: Markera allt
Tänd Punkt(Start)
For pos=Start to End-1
Släck Punkt(pos)
Tänd Punkt(pos+1)
Next pos
Släck Punkt(End)
Re: Arduino B=A-1 ?
Det finns alltid många sätt att lösa det på.
Har för mig att jag löste det så här:
Har för mig att jag löste det så här:
Kod: Markera allt
for (A=0; A<=7; A++)
{
lc.setLed(0,B,0,false);
lc.setLed(0,A,0,true);
B=A;
}
Re: Arduino B=A-1 ?
Vad har B för värde före loopen?
Om det är odefinierat så kanske B ska initieras?
Men å andra sidan, vad pekar B på då A=0?
Om det är odefinierat så kanske B ska initieras?
Men å andra sidan, vad pekar B på då A=0?