Yanny or Laurel robot #yannyorlaurel @adafruit #adafruit #CRICKIT


Yanny or Laurel robot (video), we had about 1 more hour before this meme expires, so we made a voting bot, it says the word, logs to csv, moves head, has clickable, light up buttons, it’s a voting machine.. Made with Adafruit CRICKIT, code is here.


# CircuitPython 3.0 CRICKIT demo

from adafruit_seesaw.seesaw import Seesaw

from adafruit_seesaw.pwmout import PWMOut

from adafruit_motor import servo

from busio import I2C

import audioio

import microcontroller

import board

import time



i2c = I2C(board.SCL, board.SDA)

ss = Seesaw(i2c)



print("Yanny or Laurel data logging!")



LOOKATPERSON = 90

LOOKLEFT = 60

LOOKRIGHT = 120



#################### 1 Servo

pwm = PWMOut(ss, 17)

pwm.frequency = 50

myservo = servo.Servo(pwm)

myservo.angle = LOOKATPERSON # introduce yourself



#################### 2 buttons w/2 LEDs

BUTTON_1 = 2

BUTTON_2 = 3

LED_1    = 8

LED_2    = 9



# Two buttons are pullups, connect to ground to activate

ss.pin_mode(BUTTON_1, ss.INPUT_PULLUP)

ss.pin_mode(BUTTON_2, ss.INPUT_PULLUP)

# Two LEDs are outputs, on by default

ss.pin_mode(LED_1, ss.OUTPUT)

ss.pin_mode(LED_2, ss.OUTPUT)

ss.digital_write(LED_1, True)

ss.digital_write(LED_2, True)



#################### log files

logfile = "/log.csv"

# check that we could append if wanted to

try:

    fp = open(logfile, "a")

    fp.close

except:

    print("File system not writable, halting")

    while True:

	pass



#################### Audio files

wavfile = "yanny.wav"

f = open(wavfile, "rb")

wav = audioio.WaveFile(f)

a = audioio.AudioOut(board.A0)

a.play(wav)

t = time.monotonic()



# Wait

while time.monotonic() - t < 7.5:

    pass



while time.monotonic() - t < 9.5:

    myservo.angle = LOOKLEFT

    ss.digital_write(LED_1, True)

    ss.digital_write(LED_2, False)

    time.sleep(0.5)

    myservo.angle = LOOKRIGHT

    ss.digital_write(LED_1, False)

    ss.digital_write(LED_2, True)

    time.sleep(0.5)



myservo.angle = LOOKATPERSON



# reset LEDs

ss.digital_write(LED_1, False)

ss.digital_write(LED_2, False)



selection = None

# wait until 

while not selection:

    if not ss.digital_read(BUTTON_1):

		selection = "Yanny"

		ss.digital_write(LED_1, True)

		myservo.angle = LOOKLEFT

		break

    if not ss.digital_read(BUTTON_2):

		selection = "Laurel"

		ss.digital_write(LED_2, True)

		myservo.angle = LOOKRIGHT

		break

    # if we havent selected, wait until they do!

    if a.playing and time.monotonic() - t > 15.5:

		a.pause()



# now we have a selection!

with open(logfile, "a") as fp:

    print("Writing!"+selection+", 1\n")

    fp.write(selection+", 1\n")

    fp.flush()

print("Written")



# OK play the rest of the music

a.resume()

while a.playing:

    pass



ss.digital_write(LED_1, False)

ss.digital_write(LED_2, False)



microcontroller.reset()


Related:
We Made a Tool So You Can Hear Both Yanny and Laurel – The New York Times.


Have an amazing project to share? The Electronics Show and Tell is every Wednesday at 7:30pm ET! To join, head over to YouTube and check out the show’s live chat and our Discord!

Join us every Wednesday night at 8pm ET for Ask an Engineer!

Join over 38,000+ makers on Adafruit’s Discord channels and be part of the community! http://adafru.it/discord

CircuitPython – The easiest way to program microcontrollers – CircuitPython.org


New Products – Adafruit Industries – Makers, hackers, artists, designers and engineers! — New Products 11/15/2024 Featuring Adafruit bq25185 USB / DC / Solar Charger with 3.3V Buck Board! (Video)

Python for Microcontrollers – Adafruit Daily — Python on Microcontrollers Newsletter: A New Arduino MicroPython Package Manager, How-Tos and Much More! #CircuitPython #Python #micropython @ThePSF @Raspberry_Pi

EYE on NPI – Adafruit Daily — EYE on NPI Maxim’s Himalaya uSLIC Step-Down Power Module #EyeOnNPI @maximintegrated @digikey

Adafruit IoT Monthly — The 2024 Recap Issue!

Maker Business – Adafruit Daily — Apple to build another chip at TSMC Arizona

Electronics – Adafruit Daily — SMT Tip – Stop moving around!

Get the only spam-free daily newsletter about wearables, running a "maker business", electronic tips and more! Subscribe at AdafruitDaily.com !


No Comments

No comments yet.

Sorry, the comment form is closed at this time.