Arduino Nano Midi?

Anybody tried a NANO for Midi.

I am building a midi filter which works fine on an UNO.

But do a straight pin swap to a NANO and it does not work.
Ok a couple of the Nanos are 8MHZ ( don’t ask, i got lumbered with 20 of them :frowning: ) but I am sure another is a proper 328.

I have a suspicion that the problem is that it’s only putting out 3.3V on the TX , but I have seen examples of people using NANO’s with Midi Send with no issues so perplexed a bit.

Think I will try some different code tonight and simplify ( it’s what I tell my some everytime he tries to diagnose a project. )

The filter on the UNO works great, I need it to block CH10 which my Yamaha CS1X processes from The BSP even though I don’t want it.

1 Like

No issues… I used a MIDI library for the software, and pretty standard hardware. You can look in https://github.com/holmesrichards/MCVI to see the design. Oh, also https://github.com/holmesrichards/midisnoop for another little MIDI project.

But admittedly not doing MIDI OUT on either…

3 Likes

I’ve used Nanos all the time. In fact I’ve used the MIDI filter code on Arduino Nano, Uno and Pro Minis. I’ve not heard of an 8MHz Nano before - only the Pro Mini…

If you really do have an 8MHz nano, then downloading code that is expecting a 16MHz clock will mean the baud rates for the serial ports (hence the MIDI link) will be wrong. You’d need to set the clock speed in the Arduino environment to 8MHz and rebuild it but that isn’t an option for the official Arduino Nano build… (you might be able to download to it as a 3V/8MHz Pro Mini - might be worth a try?)

As a test can you connect to it and print using Serial.print at a known baud rate (e.g. 19200) and see it in the serial monitor ok? If you try to print at 19200 but only get sensible output with the monitor set to half speed (9600) then you’ll know there is a code/clock mismatch… I don’t know if it would support it, but you can configure a custom MIDI baud rate - but I don’t know if it would support 2x31250 - i.e. 62500…

It is probably easier (!) to create a new board definition for the Arduino environment with the clock speed set to 8MHz. You’d need to find the Nano section in the board.txt and change the options that say 16000000 to 8000000 (I think it might be F_CPU but there may be others too).

If it is a 3V3 issue, then a 3V3 MIDI circuit is quite possible (there are some here: DIY MIDI Interfaces – Simple DIY Electronic Music Projects). So that might be worth a look?

If it isn’t this, I’m not sure what it might be without a bit more info… but that is my best guess at the moment from what you’ve said.

Kevin

1 Like

Checking serial out would def be my first check as well. @twinturbo can you show a pic of what you got jic it’s something silly?

Midi out of an Arduino nano is pretty easy peasy. You could also have wired up the 5 pin midi din connection backwards or something.

1 Like

As I say it works fine on an UNO.

Yes the 8mhz ones are really 8mhz ( 168’s I Think ) and I don’t necessarily expect them to work. They are a battle and now avoid them for anything that requires timing. Never got to the bottom of it but if the clock speed was set right in the board settings ( BLINK working on time ) the Serial Baud was 100% out… So avoid… never make that mistake again so was prepared this time…

The other one I have is defo a 16MHZ 328 so I don’t expect any timing issues.

The wiring is all correct as I literally subst the UNO for a NANO ensuring the TX/RX is the right way round.

Maybe it’s the old Yamaha being picky ? never thought of that.

Guess if noone else has had issue I need to try another Synth and maybe fined another nano.

Cheers for all the input.

All

Rob

Hagiwo uses nanos in almost all his modules. And he has made a lot of them. In my own project I’ve not encountered any problems with midi and nanos.

1 Like

Is everyone using genuine ones?

Just confirmed it’s not the Yamaha.

the Midimuso is also not working although it is receiving data It seems to be garbage as it’s flashin the recive light and the CLK light but not the CH1 Gate.

I have the Nano and Uno next to each other with the same sketch on both just playing a scale.

Swap the TX wire from one to the other , works on the Uno , garbage on the Nano…

How very odd.

Think I will just order up A DIP package 328 and breadboard it with minimal components.

I could use an UNO but it’s to wide for a 50MM wide module.

Thanks…

Rob

LOL no

Do I look like I’m made of money

4 Likes

Yeah my jaw dropped when I looked…

Flumoxed then.

Every thing I read over the weekend , everything i saw , said it should work… I guess the only thing i have not ruled out is the 5m cable…

I have seen one or two circuits using a 7404/7414 inverter. but it does not seem to be common.

Just need to move on and hope the standalopne MCU works as it should.

Ive used both genuine and fake nanos from tayda. Never had any issues. Legit even get it to work with just 220r resistors between the din pins and tx/ 5v pins of the nano.
Show us a pic just to confirm!

4 Likes

I have some genuine but mostly cheap copies… and I use lots… but they are all 16MHz 328s.

Did you try building as a 8MHz Pro mini? What Arduino build settings are you using? Did you try doubling/halving the serial monitor baud to see if you get a connection so that Serial.print works?

My money at the moment is still on some mismatch somehow in what the IDE thinks the CPU frequency is and what it really is, but if it’s not that, I’m not sure where to go next based on what you’ve said. If this was me, at this point I’d certainly attempt to categorically rule that out, going back over old tests making no assumptions, as it has caused me issues myself which have been very time consuming to untangle in the past… (I even had one time where I’d changed something in the “behind the scenes” board settings and forgot about it! That taught me - I don’t do that anymore. I’ve still hacked about in libraries mind… :))

Good luck!

4 Likes

Well then

2 Likes

Perhaps I have inadvertently done something to the 328 board settings when I was trying to get the crappy 8mh\ ones to work.

but i have used the 328’s over the last year since…

will put blink on one and check the baud, serial monitor.

3 Likes

awww blessss, how cute :wink:

2 Likes

HMM Interesting…

It should be using the “Old Boot Loader 328”

Arduino Nano w/ ATmega328P

--------------------------

nano.menu.cpu.atmega328=ATmega328P

nano.menu.cpu.atmega328.upload.maximum_size=30720
nano.menu.cpu.atmega328.upload.maximum_data_size=2048
nano.menu.cpu.atmega328.upload.speed=115200

nano.menu.cpu.atmega328.bootloader.low_fuses=0xFF
nano.menu.cpu.atmega328.bootloader.high_fuses=0xDA
nano.menu.cpu.atmega328.bootloader.extended_fuses=0xFD
nano.menu.cpu.atmega328.bootloader.file=optiboot/optiboot_atmega328.hex

nano.menu.cpu.atmega328.build.mcu=atmega328p

Arduino Nano w/ ATmega328P (old bootloader)

--------------------------

nano.menu.cpu.atmega328old=ATmega328P (Old Bootloader)

nano.menu.cpu.atmega328old.upload.maximum_size=30720
nano.menu.cpu.atmega328old.upload.maximum_data_size=2048
nano.menu.cpu.atmega328old.upload.speed=57600

nano.menu.cpu.atmega328old.bootloader.low_fuses=0xFF
nano.menu.cpu.atmega328old.bootloader.high_fuses=0xDA
nano.menu.cpu.atmega328old.bootloader.extended_fuses=0xFD
nano.menu.cpu.atmega328old.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex

nano.menu.cpu.atmega328old.build.mcu=atmega328p

Arduino Nano w/ ATmega168-16

-------------------------

nano.menu.cpu.atmega168-16=ATmega168p16

nano.menu.cpu.atmega168-16.upload.maximum_size=14336
nano.menu.cpu.atmega168-16.upload.maximum_data_size=1024
nano.menu.cpu.atmega168-16.upload.speed=19200

nano.menu.cpu.atmega168-16.bootloader.low_fuses=0xff
nano.menu.cpu.atmega168-16.bootloader.high_fuses=0xdd
nano.menu.cpu.atmega168-16.bootloader.extended_fuses=0xF8
nano.menu.cpu.atmega168-16.bootloader.file=atmega/ATmegaBOOT_168_diecimila.hex

nano.menu.cpu.atmega168-16.build.mcu=atmega168p
nano.build.f_cpu=16000000L

Arduino Nano w/ ATmega168-8

-------------------------

nano.menu.cpu.atmega168-8=ATmega168p8

nano.menu.cpu.atmega168-8.upload.maximum_size=14336
nano.menu.cpu.atmega168-8.upload.maximum_data_size=1024
nano.menu.cpu.atmega168-8.upload.speed=19200

nano.menu.cpu.atmega168-8.bootloader.low_fuses=0xff
nano.menu.cpu.atmega168-8.bootloader.high_fuses=0xdd
nano.menu.cpu.atmega168-8.bootloader.extended_fuses=0xF8
##nano.menu.cpu.atmega168-8.bootloader.file=atmega/ATmegaBOOT_168_pro_8MHz.hex
nano.menu.cpu.atmega168-8.bootloader.file=atmega/ATmegaBOOT_168_diecimila.hex
nano.menu.cpu.atmega168-8.build.mcu=atmega168
nano.build.f_cpu=8000000L

1 Like

Think I may just remove and re-install the IDE, maybe something from last year is not right…

2 Likes

YAY…

Removed and re-installed IDE.

16MHZ Duino now good
8mhz Duino even working with the standard board file.

I can’t even remember what prompted me to start delving last year, i think it was BLINK running at half speed and just wanted to resolve that.

Anyway, we are good.

Cheers Chaps.

Rob

4 Likes

oh yeah i forgot to mention some of those knockoffs like from tayda need to use the old bootloader.
image

2 Likes