Category Archives: Uncategorized

My tricopter dimensions

Just about to dump my well served tricopter, I remembered to write the measurements here:

Front motors: 44cm
Back motor 38cm from boom
Body plate: front 13cm, back 10cm, lenght 25cm

Arms 15mm x 15mm

Here’s the beauty with motors and ESC’s stripped away:

IMG_3788.JPG

Quadcopter MultiWii Mongoose board pin mapping

Quadcopter pins:

front left		front right
Arduino=3		Arduino=10
PD3			PB2
Mong: 3			Mong=10

rear left		rear right
Arduino=11		Arduino=9
PB3			PB1
Mong: MOSI		Mong=9

When programming pins facing forwards:

  #define GYRO_ORIENTATION(X, Y, Z) {imu.gyroADC[PITCH] = -Y; imu.gyroADC[ROLL] =  -X; imu.gyroADC[YAW] = -Z;}
  #define ACC_ORIENTATION(Y, X, Z)  {imu.accADC[PITCH]  =  Y; imu.accADC[ROLL]  =  -X; imu.accADC[YAW]  =  Z;}
  #define MAG_ORIENTATION(X, Y, Z)  {imu.magADC[PITCH]  = -X; imu.magADC[ROLL]  = Y; imu.magADC[YAW]  = -Z;}

Howto: Arduino Due as MIDI HID device

1) Get the HIDUINO code from: https://github.com/ddiakopoulos/hiduino

2) Get the MIDI library for Arduino at http://sourceforge.net/projects/arduinomidilib/

3) Program the 16u2 chip with ICSP programmer:

../bin/avrdude -C avrdude.conf -c avrispmkII -p m16u2 -P usb -U flash:w:/Users/jouni/Downloads/hiduino-master/Compiled\ Firmwares/HIDUINO_MIDI.hex

To RECOVER I wrote on OS X:

cd /Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/sam/firmwares/atmega16u2

/Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/bin/avrdude -C /Applications/Arduino.app/Contents/Resources/Java/hardware/tools/avr/etc/avrdude.conf -c usbasp -p m16u2 -U flash:w:Arduino-DUE-usbserial.hex

4) Edit the arduino midi library file MIDI.h and comment row sayin “typedef uint16_t word;” to get rid off compiler error (if occurs).

5) Upload for example the following code to Due:

#include <MIDI.h>
/*
Basic I/O MIDI tutorial
by Franky
28/07/2009
*/
#define LED 13   // LED pin on Arduino board
void setup() {
pinMode(LED, OUTPUT);
MIDI.begin(4);            	// Launch MIDI with default options
// input channel is set to 4
}
void loop() {
digitalWrite(LED,HIGH);     // Blink the LED
MIDI.sendNoteOn(42,127,1);  // Send a Note (pitch 42, velo 127 on channel 1)
delay(1000);	 // Wait for a second
MIDI.sendNoteOff(42,0,1);   // Stop the note
digitalWrite(LED,LOW);
}
#include <MIDI.h>/*  Basic I/O MIDI tutorial  by Franky  28/07/2009*/
#define LED 13   // LED pin on Arduino board
void setup() {  pinMode(LED, OUTPUT);  MIDI.begin(4);            	// Launch MIDI with default options	 // input channel is set to 4}
void loop() {
digitalWrite(LED,HIGH);     // Blink the LED    MIDI.sendNoteOn(42,127,1);  // Send a Note (pitch 42, velo 127 on channel 1)    delay(1000);	 // Wait for a second    MIDI.sendNoteOff(42,0,1);   // Stop the note    digitalWrite(LED,LOW);

}

Designing microcontroller project

Few reminders when designing an uC-project:

Inputs

General on inputs:

  • Primarily use first all external interrupt and analog pins. Make pads for unused “special” pins, for example external input/analog-pins.

Pulse measuring:

  • Do you need to measure pulses? Use external interrupts whenever possible, they are simple to do and really accurate

Outputs:

  • If generating pulse out by delay remember that interrupts make the signal jitter.