Snellere IO via poort manipulatie

Weet je veel meer als ik

Als ik de plaatjes kijk , heb ik een arduino uno R2 maar dan van elegoo

Één voorbeeld is als je met NeoPixels werkt en geen bibliotheken gebruikt. De bibliotheken hebben je dat werk uit handen genomen.

Je hebt al uitgevonden dat de minimale puls die je met digitalWrite() kunt creëren 5 µs is.

Als je naar de datasheet van de WS2812B (het gebruikelijke IC in neopixels strips) kijkt zul je de volgende plaatjes tegenkomen (de volgorde in de datasheet is omgedraaid).

Als je één bit (van de 24 bits die de RGB kleur maken voor een pixel) naar de WS2812B stuurt heb je een signaal nodig dat een bepaalde periode hoog is en voor een bepaalde periode laag. Als dat bit een logische 0 is moet het signaal voor de duur T0H hoog zijn en voor de duur T0L laag zijn; als dat bit een logische 1 is moet het signaal voor de duur T1H hoog zijn en voor de duur T1L laag zijn. Je hebt een klein beetje speling in de exacte duur.

In onderstaande tabel de tijden

De Data transfer time geeft het al weg; de tijd die je hebt om dat bit over te sturen is 1.25 µs. Als je daar veel van afwijkt zal de WS2812B het niet begrijpen.

En dat gaat je dus nooit lukken met digitalWrite().

Ik heb mijn twijfels. Als je weer op je werk bent kun je het volgende controleren
1 Wat de processor is (het langwerpige IC).
2 Wat het IC is naast de USB plug. ATmega8U2 of ATmega16U2?

Van https://us.elegoo.com/products/elegoo-uno-r3-board

Ze hebben de 'P' vergeten die in het bijbehorende plaatje wel te zien is.

En verder

Ik hobby al bijna 10 jaar met Arduinos en hang sinds het begin van die 10 jaar rond op dit forum.

oke

En ik zo ongeveer 1 a 2 jaar met een aantal maanden niet vanwege de operatie.

OM even terug te komen op de micro controller kaarten.

Welke van de nieuwe kaarten zou je nu het beste kunnen gebruiken voor leer en robot projecten zoals ik nu doe

@sterretje leef je nog ??

Deze vraag is wat lastig te beantwoorden.
Er zijn veel nieuwe kaarten.
Ze gaan allemaal nogal hard in de richting van een complete PC inclusief OS (vaak Linux).
Het ligt er maar net aan wat je wil doen.
Iedereen heeft het over AI en als je naar nieuwe Arduino-achtige boardjes gaat kijken, zie je dat ook overal terugkomen.
Maar voor de dingen waar je nu om vraagt, heb je alleen AI nodig om te vragen of die het werk voor je wil doen.
En dan leer je er erg weinig van als dat ook lukt.
Vaak lukt het toch niet helemaal, en dan ga je er toch van leren.
Alleen is dat niet waar jij en de bedenkers van AI aan gedacht hadden toen ze hiermee aan de slag gingen.

Dus de Uno Q is ook zo'n ding.
Het heeft 2 verschillende zijdes (letterlijk), eentje met een STM controllertje er op dat het meest moet lijken op de oudere UNO's uit het lijstje van sterretje.
De andere zijde heeft er zo'n Linux processor op van Qualcomm (de nieuwe eigenaar van Arduino).
Dit alles is zo opgezet dat de verschillende controllers met elkaar kunnen samenwerken.
Maar als je een robot arm wil maken die 4 of 5 assen en wat "vingers" moet kunnen bedienen, dan heb je daar echt geen Linux OS voor nodig.
Ik heb het nog niet helemaal door hoe dit opgezet is, maar ik meen gelezen te hebben dat je voor die UNO Q een andere IDE moet gebruiken die ook alleen werkt als je er een board op hebt aangesloten.
Dat betekent dus ook dat je niet iets kunt voorbereiden in afwachting van zo'n boardje en dat je ook niet alvast wat code kunt schrijven alleen om te kijken of dat compileert of niet.
Ik hoop wel dat dat nog gaat veranderen, maar ik vind dit niet bepaald een goede ontwikkeling.

Om je oefeningen te kunnen blijven doen, kun je dus ook gewoon de huidige boardjes blijven gebruiken.
sterretje heeft ook al aangegeven welke boardjes het waarschijnlijk nog wat langer zullen uithouden, en die niet zware overkill zullen zijn.
Je oefeningen gaan over het programmeren in C(++) en wat beperkte hardware.
Ik denk dat het helemaal geen probleem is om de oudere boardjes daarvoor te blijven gebruiken.

Zoals MAS3 al aangaf is het moeilijk te beantwoorden.

De vraag is wat je wilt. Als je wilt blijven simuleren zit je vast aan wat de simulatoren je aanbieden.
De andere vraag is waarom je een moderner bord wilt? Nieuwsgierigheid? Ben je tegen beperkingen aangelopen die het nodig maken om modernere hardware te gaan gebruiken?

Als je ooit iets wilt kopen zijn hier een aantal gedachten.
(1)
Voedingsspanning. De meeste modernere borden werken op 3.3V in plaats van 5V; de uitzondering die ik ken is de Arduino R4 familie (Uno R4 / Nano R4). Met dat verschil moet je rekening houden als je shields en modules hebt / koopt of een ander processor bord koopt.
Als je bv de Elegoo starter kit koopt en dan later een ander controller bord wilt gaan gebruiken (bv iets gebaseerd op een ESP32) zul je of level converters moeten toevoegen of nieuwe modules moet kopen.
Als je dat niet doet is er een kans dat het niet werkt of dat je dingen opblaast. De meeste (lees: alle) 3.3V controller borden vinden het niet fijn om 5V signalen te ontvangen; hetzelfde geldt voor 3.3V shields en modules.
(2)
Een aantal bibliotheken worden niet actief onderhouden. Als een bibliotheek direct de hardware aanspreekt (zoals we het b.v in dit onderwerp gedaan hebben) is er een goede kans dat het niet zal compileren.
(3)
ESP32 borden kunnen je hoofdbrekens bezorgen als Espressif (het bedrijf dat de processors produceert en de core onderhoudt) weer eens een update van de core doet die niet compatibel is met de oudere core. Stel dat je een jaar geleden een brilliant stuk software hebt geschreven en je wilt daar nu iets aan toevoegen en je vindt uit dat met de nieuwere core je werkende programma niet meer compileert. Dat kan zijn omdat jouw programma specifieke functies gebruikt die beschikbaar waren in core 2.x en niet meer in core 3.x of dat een bibliotheek dat doet; in eerste instantie zul je zeer verward zijn totdat je uitvindt wat er fout is. Je moet je programma herschrijven, wachten tot de bibliotheek bijgewerkt is door de auteur (kan lang duren) of je moet terugvallen op de oudere core (hetgeen je waarschijnlijk niet eeuwig kunt blijven doen omdat die nieuwere processors weer niet ondersteund).
(4)
De Uno Q heeft veel te veel kinderziektes om op dit moment serieus te overwegen.
(5)
Als je ooit wilt weten hoe microcontrollers werken ben je vele malen beter af met een simpele 328P / AVR processor dan met een moderne processor.
(6)
Ondersteuning op het forum door andere gebruikers is vele malen groter voor borden gebaseerd op AVR processors dan voor modernere borden. Dat zal in de toekomst misschien wel veranderen als één bord (of familie van borden) met kop en schouders boven de rest gaat uitsteken qua populariteit.

Dit zijn mijn gedachten. En dus ben ik het met MAS3 eens dat je voor het leren van C/C++ en het werken met hardware (modules, shields) op dit moment het beste af bent met Arduinos die gebaseerd zijn op AVR processoren.

Ik leef heel gelukkig in de AVR wereld hoewel nieuwsgierigheid me waarschijnlijk in de toekomst wel een aantal borden zal opleveren die gebaseerd zijn op processors die gebaseerd zijn op ARM.

===
En ja, ik leef nog :slight_smile:

ik zit erover na te denken om richting robotica te gaan en te beginnen met bijvoorbeeld een line following robot en die uit te breiden tot een robot die zelf een maze kan oplossen.

Maar dat wordt ergens volgend jaar.

Eerst het verkeerslicht project en daarna heb ik nog deze op mijn lijstje.

en daarna kijken we wel verder