Mijn queeste
[ Voor 97% gewijzigd door Verwijderd op 01-07-2020 08:06 ]
1
| uint8_t teletext[96][8] = { |
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
1
| (teletext[n] >> i) & 0x01 |
1
| #define bitRead(value, bit) (((value) >> (bit)) & 0x01) |
[ Voor 9% gewijzigd door Sissors op 04-12-2019 16:01 ]
1
| bool pix=bitRead(teletext[0,n],i); |
[ Voor 52% gewijzigd door Verwijderd op 04-12-2019 16:24 ]
Door alleen het veranderen van een notatie (waar?) kan ik me niet voorstellen dat je opeens veel meer ruimte gaat gebruiken. Je doet dus waarschijnlijk iets anders verkeerd, wat je niet laat zien. Kijk naar de wijzigingen die je gedaan hebt ten opzichte van de vorige code en probeer je te bedenken wat je nu gedaan hebt wat dat kan veroorzaken. Als je hier hulp komt vragen moet je ook je foutmeldingen gewoon copy/pasten ipv in je eigen woorden vertellen, eventueel met bijbehorende context als regelnummers genoemd worden. Ook mag je de foutmelding direct plaatsen in plaats van alleen een "werkt niet". Voor ons is nu in ieder geval volstrekt onduidelijk wat je veranderd hebt aan je code en wat je probeert.Verwijderd schreef op woensdag 4 december 2019 @ 16:17:
Notatie is blijkbaar teletext[0[[n], maar nu krijg ik error dat variabelen 300% van ruimte gebruiken...
1
2
3
4
5
6
7
8
9
10
| void loop() { for(byte n=0; n<96; n++){ for(int i=0; i<strip.numPixels(); i++) { // pix=(teletext[0][n]>>i)&0x01; if (pix) strip.setPixelColor(i, white); else strip.setPixelColor(i, black); strip.show(); } } } |
1
2
3
4
5
6
7
8
9
10
| void loop() { for(byte n=0; n<96; n++){ for(int i=0; i<strip.numPixels(); i++) { pix=(teletext[0][n]>>i)&0x01; if (pix) strip.setPixelColor(i, white); else strip.setPixelColor(i, black); strip.show(); } } } |
[ Voor 1% gewijzigd door .oisyn op 04-12-2019 16:49 . Reden: Code tags toegevoegd. ]
[ Voor 6% gewijzigd door Sissors op 04-12-2019 16:28 ]
Je hebt teletext gedefinieerd als:Verwijderd schreef op woensdag 4 december 2019 @ 16:17:
Notatie is blijkbaar teletext[0[[n], maar nu krijg ik error dat variabelen 300% van ruimte gebruiken...
Heel raar, de schets gebruikt zonder de bool=... zin 49 bytes van het dynamisch geheugen, en met die zin 9265 bytes wat niet meer past. Dat terwijl het enkel vullen van reeds bestaande variabele is met iets uit andere variabele.
1
| uint8_t teletext[][96] = {...} |
1
2
3
4
5
| uint8_t teletext[][96] = { {B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000},// space {B00100000,B00100000,B00100000,B00100000,B00100000,B00000000,B00100000,B00000000,B00000000},// ! {B01010000,B01010000,B01010000,B00000000,B00000000,B00000000,B00000000,B00000000,B00000000},// " {B00110000,B01001000,B01000000,B11100000,B01000000,B01000000,B11111000,B00000000,B00000000},// £ |
Daarom had ik ook de link voor Arduino erbij, hem als const definieren is niet voldoende voor Arduino...Verwijderd schreef op woensdag 4 december 2019 @ 16:29:
De array als const definieren helpt niet, error blijft zelfde.
1
| uint8_t teletext[96][8] = { |
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Verwijderd schreef op woensdag 4 december 2019 @ 20:04:
Ik was er nog niet helemaal. Probleem is blijkbaar nog het volgende:
Als je een array in PROGMEM zet kun je m NIET met variabelen uitlezen, maar alleen met vaste celwaarden. Voor dat ik dat door had..... pffff.
Ik zie persoonlijk niet in waarom je een array niet "met variabelen kan uitlezen" als 'ie in PROGMEM staat, dus je maakt waarschijnlijk een denkfout. Nofi, maar als beginner is het het beste om bij dit soort vragen gewoon de precieze foutmelding te posten en niet een eigen interpretatie ervan. Daarbij is het voor jou ook nuttig om je eigen interpretatie van de foutmelding erbij te vermelden, inclusief de pogingen die je hebt genomen om het probleem op te lossen en waarom dat niet werkte, enz. Dan kunnen wij zeggen of je gedachtegang klopt of niet, en je op de juiste weg helpen.DataGhost schreef op woensdag 4 december 2019 @ 16:24:
[...]
Als je hier hulp komt vragen moet je ook je foutmeldingen gewoon copy/pasten ipv in je eigen woorden vertellen, eventueel met bijbehorende context als regelnummers genoemd worden. Ook mag je de foutmelding direct plaatsen in plaats van alleen een "werkt niet". Voor ons is nu in ieder geval volstrekt onduidelijk wat je veranderd hebt aan je code en wat je probeert.
[ Voor 19% gewijzigd door jeroen3 op 04-12-2019 20:39 ]
Ah, dat wist ik niet want daar heb ik zelf nog niet direct mee te maken gehad, alleen maar in software die al was geschreven waarbij ik alleen maar de data in het PROGMEM zelf hoefde aan te leverenjeroen3 schreef op woensdag 4 december 2019 @ 20:38:
@DataGhost Op de arduino (atmega) kun je een PROGMEM niet zomaar met variabelen uitlezen want er is een speciale instructie nodig om hem uit het programmageheugen (PROG-MEM) te halen.
Lang leve de Harvard architectuur!
En oja, vertel ook wat je wil bereiken. Zo voorkom je het xy-probleem.
Apple iPhone 17 LG OLED evo G5 Google Pixel 10 Samsung Galaxy S25 Star Wars: Outlaws Nintendo Switch 2 Apple AirPods Pro (2e generatie) Sony PlayStation 5 Pro
Tweakers is onderdeel van
DPG Media B.V.
Alle rechten voorbehouden - Auteursrecht © 1998 - 2025
•
Hosting door TrueFullstaq