mojoEngineSim README.md

alt tag

This is an Arduino project that uses a looping sample to roughly generate engine sound effects. It's based on the example at http://playground.arduino.cc/Code/PCMAudio you can still see the remnants in the timer setup functions.

It can be configured to be controlled by a pot, or analog voltage. A pulse width as you would get from a standard RC receiver, or you can talk to it over SPI. You can also connect a MCP4131 for automatic volume control.

You can find a demo video here: http://youtu.be/Uw-a45LOt3c

Should work on anything at 16MHz with an ATMega328, and will probably work fine on an ATMega168.

  • Pin A1 - Pot wiper
  • Pin 2 - Pulsewidth IN
  • Pin 3 - Sound OUT
  • Pin 4 - MCP4131 CS
  • Pin 5 - MCP4131 SCK
  • Pin 6 - MCP4131 DATA
  • Pin 10 - SPI CS
  • Pin 11 - SPI MISO
  • Pin 12 - SPI MOSI
  • Pin 13 - SPI SCK

In the .ino you can change these values to set which mode you want to use:

boolean managedThrottle = true; // Managed mode looks after the digipot if fitted for volume, and adds some mass to the engine
boolean potThrottle = false;    // A pot connected to A1, 0-1023 sets speed
boolean pwmThrottle = false;    // Takes a standard servo signal on pin 2 (UNO)
boolean spiThrottle = true;     // SPI mode, is an SPI slave, expects 1-255 for throttle position, with 0 being engine off

managedThrottle can be true or false in any mode, of the last 3 only 1 of them must be true or strange things will happen...

settings.h contains some bits and bobs you can fiddle with, more to add later.