Sida 1 av 2
Arduino B=A-1 ?
Postat: 5 januari 2015, 00:47:30
av GeekJoan
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. ?
Re: Arduino B=A-1 ?
Postat: 5 januari 2015, 00:56:09
av sodjan
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?
Re: Arduino B=A-1 ?
Postat: 5 januari 2015, 01:08:59
av kodar-holger
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å:
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.
}
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...
Re: Arduino B=A-1 ?
Postat: 5 januari 2015, 01:56:31
av Andax
Ska du verkligen ha med for i huvudtaget för B. Räcker inte bara:
int B = A-1;
Re: Arduino B=A-1 ?
Postat: 5 januari 2015, 02:10:02
av GeekJoan
OK. Jag håller på att modifiera en annan kod som jag gjorde tidigare idag.
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);
}
}
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 (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 ?
Postat: 5 januari 2015, 02:12:13
av GeekJoan
Andax skrev:Ska du verkligen ha med for i huvudtaget för B. Räcker inte bara:
int 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.
Re: Arduino B=A-1 ?
Postat: 5 januari 2015, 02:37:52
av gkar
Nej!
Re: Arduino B=A-1 ?
Postat: 5 januari 2015, 02:57:59
av GeekJoan
Its alive.
led_matrix.jpg
Re: Arduino B=A-1 ?
Postat: 9 januari 2015, 20:59:19
av B1n4ry
Är det detta du försöker göra?
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);
}
}
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:
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 ?
Postat: 9 januari 2015, 22:08:35
av GeekJoan
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 ?
Postat: 13 januari 2015, 08:22:15
av ronnylov
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.
Re: Arduino B=A-1 ?
Postat: 14 januari 2015, 09:40:47
av bos
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.
Re: Arduino B=A-1 ?
Postat: 14 januari 2015, 10:00:29
av Nerre
Ä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):
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)
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.
Re: Arduino B=A-1 ?
Postat: 14 januari 2015, 23:58:49
av GeekJoan
Det finns alltid många sätt att lösa det på.
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 ?
Postat: 15 januari 2015, 00:06:01
av sodjan
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?