update guide
This commit is contained in:
parent
0fe75141b5
commit
6699171c04
3 changed files with 64 additions and 2 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -1,2 +1 @@
|
|||
*.py~
|
||||
*.ino~
|
||||
*~
|
||||
|
|
|
|||
4
Guardian_Robot_Zelda_BOTW/README.md
Normal file
4
Guardian_Robot_Zelda_BOTW/README.md
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# Guardian Robot - Zelda BOTW
|
||||
|
||||
Code to accompany this tutorial:
|
||||
https://learn.adafruit.com/guardian-robot-zelda-botw/
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
// Trinket Servo Monster sketch
|
||||
// Hardware: Adafruit Trinket (3V or 5V), micro servo, LED + resistor
|
||||
// Libraries: uses Adafruit_TiCoServo library to manage servo pulses,
|
||||
// even though NeoPixels are NOT being used here.
|
||||
|
||||
#if !defined(__AVR_ATtiny85__)
|
||||
#error "This code is for ATtiny boards"
|
||||
#endif
|
||||
#include <Adafruit_TiCoServo.h>
|
||||
#include <avr/power.h>
|
||||
|
||||
// Servo parameters. Pin MUST be 1 or 4 on a Trinket. Servo position
|
||||
// is specified in raw timer/counter ticks (1 tick = 0.128 milliseconds).
|
||||
// Servo pulse timing is typically 1-2 ms, but can vary slightly among
|
||||
// servos, so you may need to tweak these limits to match your reality.
|
||||
#define SERVO_PIN 4 // Pins 1 or 4 are supported on Trinket
|
||||
#define SERVO_MIN 4 // ~1 ms pulse
|
||||
#define SERVO_MAX 26 // ~2 ms pulse
|
||||
|
||||
#define LED_PIN 0 // "Eye" LED is connected here
|
||||
|
||||
Adafruit_TiCoServo servo;
|
||||
|
||||
void setup(void) {
|
||||
#if (F_CPU == 16000000L)
|
||||
// 16 MHz Trinket requires setting prescale for correct timing.
|
||||
// This MUST be done BEFORE servo.attach()!
|
||||
clock_prescale_set(clock_div_1);
|
||||
#endif
|
||||
servo.attach(SERVO_PIN);
|
||||
pinMode(LED_PIN, OUTPUT);
|
||||
digitalWrite(LED_PIN, HIGH);
|
||||
}
|
||||
|
||||
uint32_t lastLookTime = 0; // Time of last head-turn
|
||||
|
||||
void loop(void) {
|
||||
|
||||
unsigned long t = millis(); // Current time
|
||||
|
||||
// If more than 1/2 second has passed since last head turn...
|
||||
if((t - lastLookTime) > 500) {
|
||||
if(random(10) == 0) { // There's a 1-in-10 chance...
|
||||
// ...of randomly moving the head in a new direction:
|
||||
servo.write(random(SERVO_MIN, SERVO_MAX));
|
||||
lastLookTime = t; // Save the head-turn time for future reference
|
||||
}
|
||||
}
|
||||
|
||||
// Unrelated to head-turn check,
|
||||
if(random(10) == 0) { // there's a 1-in-10 chance...
|
||||
// ...of an "eye blink":
|
||||
digitalWrite(LED_PIN, LOW); // The LED turns OFF
|
||||
delay(random(50, 250)); // for just a short random moment
|
||||
digitalWrite(LED_PIN, HIGH); // then back ON
|
||||
}
|
||||
|
||||
delay(100); // Repeat loop() about 10 times/second
|
||||
}
|
||||
Loading…
Reference in a new issue