Problem Solving: Arduino Mega 2560 + Analog Read + LCD YwRobot LCM1602 IIC V1

Written by  on June 18, 2014

A quick one today.

I’ve got one of the little 2 line LCDs with a ywrobot I2c interface on the back. Only requires power, SDA and SCL rather than 8 or more pins the LCD would require directly.

– One thing to know is that the display suffers from some kind of delay where pixels fade in and out over a few microseconds. What this means is that with a very fast loop you need a delay just so values have enough time to appear. Also values that change very fast will appear to be a blur.

To wire it up I followed this post:

The only change was adding the potentiometer on A1 (plus power and ground for the pot, used part of a breadboard as a power bus, see photo)

LEARNING THE HARD WAY: After testing with the example code from the Arduino-info site I turned to reading an analog value direct onto the screen. I then did the usual mucking around trying to get the int value as a char, but then it turns out the LCD library supports print so it will do it for you

Kudos to for the example code and instructions.

/* Example Software Sketch
 16 character 2 line I2C Display
 Backpack Interface labelled "YwRobot Arduino LCM1602 IIC V1"
 Originally by 
 Slightly modified by Toby K to include an Analog Read.*/

/*-----( Import needed libraries )-----*/
#include <Wire.h>  // Comes with Arduino IDE
// Get the LCD I2C Library here: 
// Move any other LCD libraries to another folder or delete them
// See Library "Docs" folder for possible commands etc.
#include <LiquidCrystal_I2C.h>

/*-----( Declare Constants )-----*/
/*-----( Declare objects )-----*/
// set the LCD address to 0x27 for a 20 chars 4 line display
// Set the pins on the I2C chip used for LCD connections:
//                    addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Set the LCD I2C address

/*-----( Declare Variables )-----*/

void setup()   /*----( SETUP: RUNS ONCE )----*/
  Serial.begin(9600);  // Used to type in characters

  lcd.begin(16,2);   // initialize the lcd for 16 chars 2 lines, turn on backlight

// ------- Quick 3 blinks of backlight  -------------
  for(int i = 0; i< 3; i++)
  lcd.backlight(); // finish with backlight on  

//-------- Write characters on the display ------------------
// NOTE: Cursor Position: (CHAR, LINE) start at 0  
  lcd.setCursor(0,0); //Start at character 4 on line 0
  lcd.print("Hello, world!");

// Wait and then tell user they can start the Serial Monitor and type in characters to
// Display. (Set Serial Monitor option to "No Line Ending")
  lcd.setCursor(0,0); //Start at character 0 on line 0
  lcd.print("Use Serial Mon");
  lcd.print("Type to display");  

}/*--(end setup )---*/

void loop()   /*----( LOOP: RUNS CONSTANTLY )----*/
      // clear the screen
      int sensorValue = analogRead(A1);
      //String myString = String(sensorValue);

}/* --(end main loop )-- */

/* ( THE END ) */

Problem Solving: Arduino Mega 2560 + Generic Ethernet Shield

Written by  on June 18, 2014

Trying to combine these for my 16 knob ethernet controller.

Having an issue with uploading sketches while the Ethernet shield is attached to the Mega 2560.
Upload times out.

Some solutions on forum thread here.

Will try some and report back.
Note some people report crashing the firmware in there mega and having to reupload it, so be careful.

Random Knowledge: Seeed Grove hole dimensions

Written by  on May 2, 2014

I’ve been using Seeedstudios Grove system for my Arduino prototyping.
If you don’t know it’s a shield and cable system for Arduino that basically means parts just snap together and you don’t have to mess around with breadboards or soldering. At least for simple applications.

One piece of information I couldn’t find anywhere was how big the mounting holes are on their boards.
After some trial and error today I can tell you that you need m2 (2mm) hardware to suit the holes on the grove sensors and peripherals. The base shield has m3 holes, same as the Arduino.

If you’re in Australia you won’t be able to get m2 screws at Bunnings or Jaycar. I’ve only found them at speciality fastener shops like Tower Fasteners in Marrickville. Google ‘fasteners’ and see if there is another store close to you. (Coventry Fasteners is a reasonably common chain)

If you have the time you can source them from ebay.

Problem Solving: Powering Seeduino Ethernet + 24 x Grove Chainable LEDs

Written by  on April 30, 2014

* Some trial and error as I try to power Seeduino Ethernet and 24 x Grove Chainable RGB LED *

By default the grove cables supply power to the LEDs from the seeduino. However this is too much current for the seeduino and it gets very hot.
So we need to divert the power lines for the LEDs to another source but keep the data lines going to Seeduino.
The problem is that the data lines and power lines use the same ground wire.
This seems like an easy solve right? Just bridge the ground lines between the Seeduino Ethernet power source and LED power source right? Like Adafruit have done on their tutorial for their very similar P9813 LED strip?
In our case this won’t work because the power supplies are different voltages and so can’t be the same supply with the same ground.

The Seeduino Ethernet needs 6 – 12v on it’s jack, the RGB LEDs need 5v.

Test A: I’m going to try a simple hack, which is powering the Seeduino Ethertnet via it’s FTDI connection at 5v directly. Then it will be ok to share the ground of these.
It’s not documented that you can do this. Neither the Seeduino Ethernet documentation or ArduinoBoardEthernet documentation mention powering via FTDI. So hopefully it doesn’t blow it up.

– Results 1
Its working.
Getting warm, but not hot.
Ran for 10 minutes then froze when I bumped ethernet connection. Doesn’t seem to recover from having ethernet fail without a hard reset.

– Results 2
Working well.
Still warm
Ran for 30 minutes before I screwed it up by disconnecting my network.

– Results 3
Now connected to network wirelessly via a TPLink-TLWR702N in client mode.
Ran for 1hr:30 before I accidentally reset it.
Still kind of warm.

– Result 4
Ran for 30 mins before I accidentally reset it again.
This seems to be happening pretty easily, going to try an ethernet cable with a locking plug.
Still warm.

– Result 5
Better phsyical reliability with a locking plug rj45. Shook it around a whole bunch and no freezes, still giving good data. Guess I had a particularly bad connector on my previous cable. Still, it would be better if the seeduino could withstand losing it’s network connection for a moment without freezing.

LEARNING THE HARD WAY: Seems the disconnect issue with the Seeduino is only a problem when the rj45 is pulled from the seeduino itself. Pulling it at the destination or the network being unavailable in other ways doesn’t seem to bother it. So far in any case, needs more testing.

=== Conclusion ===
– You can power the Seeduino Ethernet using a regulated 5v source via the 5V and gnd pins on the FTDI header. However it gets quite warm, I would have reservations about using it for an ‘always on’ application.
– Large groups of the grove Chainable RGB LED can be powered by directly powering the chain post-microcontroller, as long as you share the ground connection between the microcontroller and seeduino.
– The seeduino ethernet network functionality freezes if you disconnect the cable while it’s working on UDP (and perhaps in other situations). The only way to get it back is a hard reset.

Reliability Test: Seeduino Ethernet UDP + Grove Accelerometer(±16g) ADXL345r + Grove Chainable RGB LED

Written by  on April 30, 2014

* A log of reliability tests and subsequent findings when working with the Seeduino Ethernet, Grove ADXL345 Accelerometer and Grove Chainable RGB LEDs * Read more…

Reliability Test: Seeduino Ethernet UDP

Written by  on April 30, 2014

* A log of reliability tests and subsequent findings when working with the Seeduino Ethernet * Read more…

Reliability Test: Uno R3 + Wifi Shield UDP

Written by  on April 29, 2014

* A log of reliability tests and subsequent findings when working with the Uno R3 + Wifi Shield * Read more…

Reliability Test: Uno R3 + Grove Accelerometer ADXL345 (±16g) + Grove Chainable RGB LED

Written by  on April 29, 2014

* A log of reliability tests and subsequent findings when working with the Uno R3, Grove Accelerometer ADXL345 and Grove Chainable RGB LED * Read more…

Reliability Test: Uno R3 + Grove Accelerometer MMA7660FC (±1.5g)+ Grove Chainable RGB LED

Written by  on April 28, 2014

* A log of reliability tests and subsequent findings when working with the Uno R3, Grove Accelerometer MMA7660FC and Grove Chainable RGB LED * Read more…