Picadae hardware and control code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kevin c5c95c5f97 tiny/i2c_timer_pwm_2.c,tinyMakefile : New firmware version with programmable hold delay. 3 years ago
..
app picadae_api.py,picadae_shell.py : Added 'flags' parameter and 'make_scale' API. 3 years ago
ctrl app/README.md,tiny/README.md,ctrl/READM.md : Initial commit. 3 years ago
tiny tiny/i2c_timer_pwm_2.c,tinyMakefile : New firmware version with programmable hold delay. 3 years ago
README.md app/README.md,tiny/README.md,ctrl/READM.md : Initial commit. 3 years ago

README.md

This folder contains the picadae control code.

The picadae control program consists of three parts:

Architecture

The keyboard control hardware consists of 8 driver boards mounted above the solenoids on the keyboard assembly. Each driver board has 11 key driver circuits which control 11 piano keys. Each key driver circuit consists of an ATtiny85 microcontroller which controls a set of power transistors which in turn control the state of the solenoid. The solenoid can be in one of three states:

  • off
  • attack
  • hold

The attack state is triggered by pulsing the the solenoid with a fast (250 microsecond to 30 millisecond) 36 volt pulse. The duration of the pulse determines the attack dynamic. Longer pulses produce louder notes. At the end of the attack state the solenoid transitions into a hold state. During this time the key is held down with just enough force to sustain the note.

All 88 ATtiny85 microncontrollers are attached to a single I2C bus which is mastered by an ATmega328 MCU which acts as a serial to I2C translator for the host computer.

The host API is implemented as the Python class ‘Picadae’ in app/picadae_api.py. The control shell program app/picadae_shell.py shows an example usage of the API.