Stap 3: Uw Standalone Chip Program
De reden die u zijn bedoeld om het verwijderen van de chip van de arduino board is omdat wanneer de programmering TX/RX begint, stelt de arduino-chip opnieuw in. Deze reset desynchronizes de standalone-chip van de programmering bord, waardoor vervolgens een upload mislukking. Het werk is rond eenvoudig.
Programmeren van een Standalone-Chip
1) kabellengte tot de standalone-chip, volgens de laatste stap.
2) hechten een condensator 20uF tussen de RESET en GND pin op de Arduino board. Zorg ervoor dat de positieve poot van de condensator is aangesloten op de resetpin en de negatieve been is aangesloten op een pin van de grond. Deze stap wordt voorkomen dat de arduino opnieuw instellen tijdens het uploadproces.
3) Zorg ervoor dat LilyPad arduino w / atmega 168 is geselecteerd onder Hulpmiddelen > Raad van bestuur. Zorg ervoor dat Arduino zoals ISP is geselecteerd onder Hulpmiddelen voor > programmeur.
4) Kopieer en plak de code van de arduino in de Arduino IDE
5) Klik op Bestand > uploaden met behulp van de programmeur.
6) kruis je vingers en bidden tot het breadboard goden niet hebt u een losse draad.
7) dans met jubelstemming omdat u hebt nu een standalone atmega chip geprogrammeerd om te doen wat je wilt doen.
Ik gebruikte het voorbeeld van de capsense gevonden in de arduino libraries en bewerkt om te reageren op meerdere raakt. Ik opgenomen fade, want ik houd niet van plotselinge helderheid wijzigingen (en het ziet er gewoon veel koeler)
De CODE van de//Just kopiëren en plakken.
byte LEDPin = 11; PWM-uitgang pins voor LED
byte capSensePin = 2; PIN te hechten aan de capacitieve sensor
byte modus = 0; Hiermee bepaalt u de helderheid van de LED. 0 is uitgeschakeld. Varieert tussen 0 en 255.
byte touchThreshold = 100; Minimale aanraakgevoelige waarde om te starten volgende modus
byte targetBrightness = 0; Instellen power op helderheid
byte currentBrightness = 0; variabele te vergelijken van de helderheid
VOID Setup {}
Serial.begin(9600);
pinMode (LEDPin, uitvoer); LEDPin ingesteld op uitvoermodus
}
void loop {}
Als (readCapacitivePin(capSensePin) > touchThreshold) {//If de waarde voor capSensePin groter is dan touchThreshold doe dan...
delay(250);
Knop ontdendering. Hoe zou ik het verwijderen van deze pauze met behulp van millis()??
modus ++; Als de bovenstaande drempel wordt overschreden, verhoog dan de waarde van modus met 1
Dit volgende deel schetst de verschillende helderheidsniveaus van LED. 255 is helemaal een. 128 is halve helderheid.
Als (modus > 3) modus = 0; Als de waarde voor mode > 3 vervolgens waarde van modus ingesteld op 0.
Als (modus == 0) targetBrightness = 0;
Als (modus 1 ==) targetBrightness = 255;
Als (modus 2 ==) targetBrightness = 128;
Als (modus 3 ==) targetBrightness = 64;
Serial.Print ("de huidige modus is..."); Seriële monitor bebug modus verhoogt
Serial.println(mode); afdrukken van de waarde van modus naar seial monitor
}
Verdwijnen van besturingselement
Als (targetBrightness > currentBrightness) currentBrightness ++;
Als (targetBrightness < currentBrightness) currentBrightness--;
analogWrite (LEDPin, currentBrightness);
delay(3); bepaalt hoe snel de fade optreedt.
Serial.println(currentBrightness);
DIT PUNT VERDER IK HEB NIET SCHRIJVEN.
Elke 500 ms, afdrukken de waarde van de capacitieve sensor
Als ((millis() % 500) == 0) {}
Serial.Print ("capacitieve Sensor op Pin 2 leest:");
Serial.println(readCapacitivePin(capSensePin));
}
}
readCapacitivePin
Ingang: Arduino pin-nummer
Uitgang: Een nummer, van 0 tot de uiting van de 17
hoeveel capaciteit is op de pin
Wanneer u contact met de pin, of wat je hebt
gekoppeld aan het, krijgt het nummer hogere
Om dit nu, aan het werk
De pincode moet een 1 + Megaohm weerstand trekken
het t/m + 5v.
uint8_t readCapacitivePin (int pinToMeasure) {}
Dit is hoe u een variabele declareren die
de poort, PIN en DDR registers zal houden
op een AVR
vluchtige uint8_t * haven;
vluchtige uint8_t * ddr;
vluchtige uint8_t * pin;
Hier vertalen wij de invoer pin-nummer van
Arduino pin nummer AVR poort, PIN, DDR,
en welke bits van deze registers die we schelen.
byte bitmasker;
Als ((pinToMeasure > = 0) & & (pinToMeasure < = 7)) {}
poort = & PORTD;
DDR = & DDRD;
bitmasker = 1 << pinToMeasure;
PIN = & PIND;
}
Als ((pinToMeasure > 7) & & (pinToMeasure < = 13)) {}
poort = & PORTB;
DDR = & DDRB;
bitmasker = 1 << (pinToMeasure - 8);
PIN = & PINB;
}
Als ((pinToMeasure > 13) & & (pinToMeasure < = 19)) {}
poort = & PORTC;
DDR = & DDRC;
bitmasker = 1 << (pinToMeasure - 13);
PIN = & PINC;
}
Kwijting van de pin eerst door het lage- en output
* poort & = ~ (bitmasker);
* ddr | = bitmasker;
delay(1);
Maak de pin een ingang zonder de interne pull-up op
* ddr & = ~ (bitmasker);
Nu zien hoe lang de pin te krijgen trok
int cycli = 16000;
for (int i = 0; ik < cycli; i ++) {}
Als (* pin & bitmasker) {}
cycli = i;
breken;
}
}
Kwijting van de pin opnieuw door het lage- en output
Het is belangrijk om te laten de pinnen laag als u wilt
mogelijk te raken meer dan 1 sensor tegelijk - als
de sensor wordt overgelaten getrokken hoog, wanneer je aanraken
twee sensoren, je lichaam zal de overdracht van de kosten tussen
sensoren.
* poort & = ~ (bitmasker);
* ddr | = bitmasker;
retourneren van cycli;
}