Inhoudsopgave:

Arduino minder bekende functies: 9 stappen
Arduino minder bekende functies: 9 stappen

Video: Arduino minder bekende functies: 9 stappen

Video: Arduino minder bekende functies: 9 stappen
Video: Lesson 10: Conditional Statement in Arduino and Using Array | SunFounder Robojax 2024, Juli-
Anonim
Arduino Minder bekende functies
Arduino Minder bekende functies

Dit is meer een lijst van niet zo vaak genoemde kenmerken van Arduino-platforms die doorgaans worden gebruikt (bijv. Uno, Nano). Deze vermelding moet als referentie dienen wanneer u die functies moet opzoeken en het woord moet verspreiden.

Kijk naar de code om voorbeelden te zien van al deze functies, zoals ik ze in verschillende van mijn projecten hier op instructable heb gebruikt (bijv. Arduino 1-wire Display (144 Chars)). De volgende stappen leggen elk één functie uit.

Stap 1: Voedingsspanning

De Arduino kan op een indirecte manier zijn eigen voedingsspanning meten. Door de interne referentie te meten met de voedingsspanning als bovengrensreferentie, kunt u de verhouding krijgen tussen interne referentie en voedingsspanning (de voedingsspanning fungeert als bovengrens voor de analoge/ADC-uitlezing). Omdat u de exacte waarde van de interne spanningsreferentie kent, kunt u vervolgens de voedingsspanning berekenen.

Voor exacte details over hoe u dit moet doen, inclusief voorbeeldcode, zie:

  • Geheime Arduino Voltmeter - Meet batterijspanning:
  • Kan Arduino zijn eigen Vin meten?:

Stap 2: Interne temperatuur

Sommige Arduino zijn uitgerust met een interne temperatuursensor en kunnen daardoor hun interne (halfgeleider)temperatuur meten.

Voor exacte details over hoe u dit moet doen, inclusief voorbeeldcode, zie:

Interne temperatuursensor:

Kan Arduino zijn eigen Vin meten?:

Stap 3: Analoge Comparator (Interrupt)

Arduino kan een analoge comparator instellen tussen pin A0 en A1. Dus de ene geeft het spanningsniveau aan en de andere wordt gecontroleerd op een overschrijding van deze spanning. Een interrupt wordt verhoogd afhankelijk van of de kruising een stijgende of dalende flank is (of beide). De interrupt kan dan door software worden opgevangen en dienovereenkomstig worden uitgevoerd.

Voor exacte details over hoe u dit moet doen, inclusief voorbeeldcode, zie:

Analoge vergelijkingsonderbreking:

Stap 4: Teller

Uiteraard heeft de AVR meerdere tellers meegeleverd. Meestal worden ze gebruikt om timers van verschillende frequenties in te stellen en onderbrekingen op te heffen als dat nodig is. Een ander misschien heel ouderwets gebruik is om ze gewoon als tellers te gebruiken zonder enige extra magie, lees gewoon de waarde wanneer je het nodig hebt (poll). Een interessant gebruik hiervan zou kunnen zijn om knoppen te debouncen, b.v. Verleen bijvoorbeeld deze post: AVR Voorbeeld T1 counter

Stap 5: Vooraf gedefinieerde constanten

Er zijn enkele vooraf gedefinieerde variabelen die kunnen worden gebruikt om versie- en compilatie-informatie aan uw project toe te voegen.

Voor exacte details over hoe u dit moet doen, inclusief voorbeeldcode, zie:

Serieel.println(_DATUM_); // compilatiedatum

Serieel.println(_TIME_); // compilatietijd

String stringOne = String (ARDUINO, DEC);

Serial.println(stringOne); // arduino ide-versie

Serial.println(_VERSIE_); // gcc-versie

Serieel.println(_FILE_); // bestand gecompileerd

deze codefragmenten zullen die gegevens naar de seriële console uitvoeren.

Stap 6: Variabele in RAM behouden via reset

Het is bekend dat Arduino Uno (ATmega328) een interne EEPROM heeft waarmee u waarden en instellingen kunt behouden tijdens het uitschakelen en deze bij de volgende keer opstarten kunt herstellen. Een niet zo bekend feit is misschien dat het mogelijk is om de waarde te behouden tijdens het resetten, zelfs in RAM - de waarden gaan echter verloren tijdens de power cycle - met de syntaxis:

unsigned long variable_that_is_preserved _attribute_ ((sectie (".noinit")));

Hiermee kunt u bijvoorbeeld het aantal RESET's tellen en door het gebruik van EEPROM ook het aantal power-ups.

Voor exacte details over hoe u dit moet doen, inclusief voorbeeldcode, zie:

  • Variabele in Ram behouden via Reset:
  • EEPROM-bibliotheek:

Stap 7: Toegang tot het kloksignaal

Arduino's en andere AVR's (zoals ATtiny) hebben een interne klok waardoor je ze kunt gebruiken zonder een externe kristaloscillator te gebruiken. Bovendien kunnen ze dit signaal tegelijkertijd ook met buiten verbinden door het op een pin (bijvoorbeeld PB4) te plaatsen. Het lastige hier is dat je de fuse-bits van de chips moet veranderen om die functie mogelijk te maken en het veranderen van fuse-bits brengt altijd het risico met zich mee dat de chip wordt gemetseld.

U moet de CKOUT-zekering inschakelen en de gemakkelijkste manier om dit te doen is door de instructie te volgen over het wijzigen van zekeringbits van AVR Atmega328p - 8bit microcontroller met behulp van Arduino.

Voor exacte details over hoe u dit moet doen, inclusief voorbeeldcode, zie:

  • Interne ATtiny-oscillator afstemmen:
  • Hoe u zekeringbits van AVR Atmega328p - 8bit-microcontroller kunt wijzigen met Arduino:

Stap 8: Interne poortstructuur van ATmega328P

Als we de interne structuur van de poorten van ATmega328P kennen, kunnen we verder gaan dan de standaardgebruikslimieten. Raadpleeg het gedeelte over capaciteitsmeter voor bereik 20 pF tot 1000 nF voor meer details en een schema van het interne circuit.

Het eenvoudige voorbeeld is om knoppen te gebruiken met digitale poorten die geen weerstand nodig hebben vanwege het gebruik van een interne pull-up-weerstand zoals getoond door het Input Pullup Serial Voorbeeld of de instructable Arduino-knop zonder weerstand.

Meer geavanceerd is het gebruik van deze kennis zoals genoemd voor het meten van condensatoren zo klein als 20 pF en bovendien zonder extra bedrading! Om die prestatie te bereiken, maakt het voorbeeld gebruik van de interne/ingangsimpedantie, de interne pull-up-weerstand en de strooicondensator. Vergelijk met de Arduino CapacitanceMeter-zelfstudie die niet lager kan gaan dan een paar nF.

Stap 9: Aan boord (ingebouwde) LED als fotodetector

Veel Arduino-boards hebben ingebouwde of ingebouwde LED's die kunnen worden bestuurd vanuit code, b.v. de Uno- of Nano-kaarten op pin 13. Door een enkele draad van deze pin toe te voegen aan een analoge ingangspin (bijv. A0) kunnen we deze LED ook als fotodetector gebruiken. Dit kan op verschillende manieren worden gebruikt, zoals; gebruik om de omgevingsverlichting te meten, gebruik LED als knop, gebruik LED voor bidirectionele communicatie (PJON AnalogSampling), enz.

Aanbevolen: