Showing posts with label IIC. Show all posts
Showing posts with label IIC. Show all posts

Monday, October 9, 2017

Use the force, Maker!




Into

Controlling a servo just by the wave of your hand? The wet dream of every Star Wars fan, isn't it? Yeah, mine too! With Microsoft's Kinect or OpenCV and a webcam and a ton of programming you can do it! Or there is a tiny, little module for your Arduino or your Raspberry Pi that can handle some simple gestures. The APDS-9960 can do the job.
It can be set to three different modes. It can work as a proximity sensor. Well, of that we have quite enough in the Arduino world. It can also operate as a ambilight sensor. Not bad. With four of them - each for every corner of your TV - you can make your own low cost ambilight.
But the mode, we're looking for, is the gesture recognition mode. It can detect following hand-movements:
- left to right
- right to left
- up to down
- down to up
- close to far
- far to close

How to use

Well, this is a multi functional sensor. It is developed by SparkFun. Therefore SparkFun published a pretty good library with very useful examples. If you pick the GestureTest example, you can implement easily your own control mechanism.

Video

 Connections 

 Careful

There are some versions of the sensor, marked as APDS-9960, that are really a APDS-9930. That means they are lacking the coolest of all functions - the gesture recognition thing!

Links

SparkFun Library @ Github
APDS-9960 @ Amazon

Monday, July 24, 2017

Text on your Display



Intro

If you want to add some visual output to your Arduino projects, you'll need a display. If you need only little to display, the LCD 1602 is a quite good solution. But you'll waste about 8 Pins on your Arduino for the display to get working. Luckily there exists a I2C adapter that you can solder right onto the pins of the display. So all you need to connect are the I2C pins, a good library and little of coding.

Wiring 

If you already have the I2C adapter soldered onto the board, wiring is quite easy. You should usually have only four pins to hook up. VCC and GND of course. The LCD display works with 5 Volts. So we go for the 5V Pin. The Arduino Uno and Nano can handle the current need for this display. SDA (data line) to analog 4 on your Arduino Uno or Nano. And SCL (clock line) to analog 5 (other Arduinos or ESP might have different pins).





Video





Needed library

https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

When thinks aren't working

  • Did you remember to call the begin()-method of the library?
  • Did you turn the backlight on?
  • Have you tried to adjust the contrast with the potentiometer on I2C adapter?
  • Did you check the I2C address? (use the i2cdetect sketch)

Where to buy

You can search on eBay for LCD1602 I2C. You'll get plenty of results.
Or, here are some direct links to Amazon:

LCD 1602 with I2C adapter

LCD 1602 without I2C adapter

I2C adapter

The bigger LCD 2004

Monday, June 12, 2017

Extend your analog inputs




Intro

Is yours too small? You want to get more? No, that is no advertisement for a penis enlargement product. It's for a board to extend the numbers of analog inputs to your microcontroller.
It's quite rare that you run out of analog inputs, when using an Arduino Uno, Nano, Micro, etc. Even a ATTiny is already equipped with 4 analog inputs. BUT if you are so keen in using a ESP8266, like I am, you'll find your self in the position having only 1 (!)  analog in. This is where a digital to analog converter comes into play.


It's all about libraries

The name of the sensor (ADS1115) already can lead to the conclusion that the board is developed by Adafruit. And of course, if you'll open the library manager in the Arduino IDE and search for ADS1X15. There you have it all. Ready-To-Use library, good commented examples.

I2C on your NodeMcu board

The default pins for I2C on the NodeMcu board are pins D1 (SCL) and D2 (SDA). But the cool thing with the NodeMcu board is, you can define for yourself where the I2C has to be.

With the command:
Wire.begin();
You usually start the Wire-library, that is responsible for the I2C bus. But you can also add the pins for SDA and SCL as parameters:
Wire.begin(D2, D1); // Wire.begin([SDA-Pin],[SCL-Pin]);

There can be more than one

The ADC1115 has a fixed I2C address, like any other I2C device. Fixed? Not quite! It has up to five different I2C addresses. The default one, and four more addresses, that you can select by connecting the address pin (ADDR) with either SDA, SCL, GND or VDD.


Video


Wire up

Normal wiring


Wiring with two modules on I2C



Links

Adafruit Library
https://github.com/adafruit/Adafruit_ADS1X15

Amazon
ADS1115
NodeMcu

Friday, April 21, 2017

Shooting Laser to measure distance



Intro

This time-of-flight sensor is a laser distance sensor, that emits a 940nm laser. It can measure distance up to 125cm quite accurate. Adafruit delivers a ready-to-use library and a functional example you should try.

Wiring


The sensor is connected via I2C. So you have to use pin 4 and 5 on the Arduino Uno/Nano (other Arduinos may have different pins for I2C). It works with 3.3 volts. But since the breakoutboard has a voltage regulator implemented, you can connect it also to 5 volt.

Video


Casing

=> work in progress

Where to buy?
You can find it on eBay, if you search for "Time of flight"
Or directly from Amazon: Time of flight
Arduino Nano