Ultraljuds parkering stöd (3 / 5 steg)
Steg 3: Programmet styrelsen
Du behöver en ICSP programmerare att programmera styrelsen och en FTDI seriell breakout ombord. För ICSP programmering, kan du använda en annan Arduino, men jag rekommenderar USBTinyISP från Adafruit. FTDI breakout styrelsen är användbart om du vill skriva/debug egna skisser, men kan utelämnas om du bara använder min kod.
Om du vill bränna skisser utan felsökning direkt från ICSP, kan du använda denna boards.txt deskriptor, mestadels från Arduino Pro Mini, som påminner om denna hårdvara:
atmega328t.Name=ATMega 328 (8 MHz) - USBTinyISP
atmega328t.upload.using=Arduino:usbtinyisp atmega328t.upload.maximum_size=32768 atmega328t.upload.speed=57600
atmega328t.bootloader.low_fuses=0xFF atmega328t.bootloader.high_fuses=0xDA atmega328t.bootloader.extended_fuses=0x05 atmega328t.bootloader.path=atmega atmega328t.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex atmega328t.bootloader.unlock_bits=0x3F atmega328t.bootloader.lock_bits=0x0F
atmega328t.Build.MCU=atmega328p atmega328t.build.f_cpu=8000000L atmega328t.build.core=arduino atmega328t.build.variant=eightanaloginputs
Om du vill programmera en skiss med hjälp av serieporten, måste du bränna bootloader med ICSP. Du kan sedan använda denna boards.txt deskriptor med en FTDI breakout ombord. Jag rekommenderar en av Sparkfun; se till att det tar fram DTR som första PIN-koden för auto reset.
atmega328s.Name=ATMega 328 (8 MHz) - Serial
atmega328s.upload.Protocol=Arduino atmega328s.upload.maximum_size=30720 atmega328s.upload.speed=57600
atmega328s.bootloader.low_fuses=0xFF atmega328s.bootloader.high_fuses=0xDA atmega328s.bootloader.extended_fuses=0x05 atmega328s.bootloader.path=atmega atmega328s.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex atmega328s.bootloader.unlock_bits=0x3F atmega328s.bootloader.lock_bits=0x0F
atmega328s.Build.MCU=atmega328p atmega328s.build.f_cpu=8000000L atmega328s.build.core=arduino atmega328s.build.variant=eightanaloginputs
Om du önskar, kan du köra på 16 MHz istället för 8 MHz med hjälp av en annan resonator och välja Arduino Pro Mini 5V 16 MHz 328 P styrelsen.
Skiss på github använder den NewPing och JeeLib biblioteken, att gränssnitt med sensorn och aktivera låg effekt sömn. Jag fann att SR04 drar 11 mA mätt på batteriet när "inaktiv", så det måste stängas mellan allt försök. Det finns en n-kanal MOSFET med en pulldown resistor och en gate strömbegränsande motstånd fungerar som en låg-side switch, att stänga av sensorn när inte aktiv. Viss särskild hänsyn måste tas vid växling sensor; Du måste koppla bort utlösaren PIN-koden genom att ange det som indata eller det hittar marken genom det och fortsätta att konsumera makt. När man kommer tillbaka online, förblir echo PIN-koden hög vilket resulterar i en kort läsa; en uppoffrande ping efter en kort fördröjning verkar återställa sensorn till ett normalt tillstånd. Det finns också ett spår att ansluta batteriet direkt till en analog stift, att mäta batterispänningen. Skissen rapporter ut spänningen med en sekvens av röda och gröna blinkar under parkerat läge, och kommer också att gå till ett svagt batteri när spänningen sjunker under 2V, blinkande rött tills den dör.
Skiss definierar för närvarande de röd/gul/grön trigger avstånd på 40, 150 och 500 cm. När i intervallet gul, blinkar det från mellan 20 millihertz till 1 Hz med timer avbrott, som ger en visuell indikation på hur nära du får till rött. Dessa värden kan ändras genom att ändra konstanterna överst i filen.
Skissen kan lätt ändras för att fungera med en regelbunden Arduino, men då det brukar vara mycket låg.