Nybörjare, Arduino. Många frågor!

Hej Som sagt en glad nybörjare som kommer att ställa många frågor om detta. Jag har mest just nu iaf frågor om hur Arduino arbetar och på vilka sätt man skall angripa ett problem kodmässigt.

Jag kommer att ställa frågor i form av scenarios av projekt som kan tänkas bli. Jag hoppas jag kan få hjälp och på det viset komma i rätt riktning :smiley:

1: Scenario 1:
Jag vill kunna läsa av flertalet knappar och strömbrytare, både återfjädrande och statiska, dom kommer att behövas läsas ofta ( typ 1 ggr/sekund ) och knapparna kan påverkas olika under hela tiden som programmet körs. Resultat av det skall skickas seriellt till en annan enhet för bearbetning. 2 portar på Arduinon bör också kunna köra en PWM baserat på vissa knappars state.

Vilket sätt är det bästa att kunna läsa av en sådan mängd knappar och brytare samtidigt som beskrivet ovan. Är det Interupts, TimerInterupts eller kan man köra det på smart sätt i main? DVS minska behovet av hårdvaru interupts.

2: Scenario 2:
Om jag kör en version av Arduino som har få ingångar/utgångar men behöver ett antal mer än vad jag fysiskt har och beslutar mig för att köra ett shiftregister. Kommer då Shiftregistret att hålla kvar den state som jag lämnar den i? DVS som jag kör Shift01 som OUTPUT, HIGH kommer då den att fortsätta vara HIGH när jag skickar data till SHIFT02?

Kan ett shiftregister vara en lösning för att utöka antalet Inpterupt möjliga INPUTS, dvs om jag kör en Uno med endast 2 hårdvaru Interupts, utöka dom till 8 med ett shiftregister?

Jag hoppas ni grymma Aduino kunniga där ute kan hjälpa mig med dessa frågor. Har dock en mer hårdvaru teknisk fråga. Hur många kommandon kan man räkna med att Arduinon hinner köra på 1 sekund? Jag vet att det beror på många faktorer men finns det något genomsnittligt uppgivet?

//Johnny

Välkommen till arduinoforumet :slight_smile:

  1. Jag hade valt att bara läsa av pinnarna, utan interrupts. Eventuellt med Bounce2-biblioteket för att hantera debouncing. En gång per sekund är inte ofta för en mikroprocessor; det finns gott om tid att läsa så länge du inte gör något annat som är tidskrävande.

  2. Skiftregister håller kvar värdena tills du ändrar dem nästa gång (eller strömförsörjningen bryts). Enheter som inte behåller värdet brukar kallas multiplexer.
    För flera inputs kan det vara enklare att använda t.ex. Home · GreyGnome/PinChangeInt Wiki · GitHub för att få interrupts på alla Arduinons pinnar, än att lägga till ett externt chip.

En ATMega328 16MHz (som sitter i Arduino Nano) klarar göra 200 000 - 4 000 000 instruktioner per sekund. Som du säger beror det på en del faktorer, men jämfört med hur snabbt en människa kan trycka på knappar så är processorn mycket snabbare.

Det låter ju mycket bra. Då har jag fått lite koll på hur saker fungerar :slight_smile: Dags att införskaffa lite komponenter så man kan börja labba och få saker att snurra, låta och blinka...

Sedan när det blir dags för svårare projekt så kanske det blir fler frågor :smiley:

Tack så mycket för ett bra svar.