Posts

Showing posts with the label Arduino

Can I Use The Analog Pins On The Arduino For My Project As Digital?

Answer : You can always use the analog pins for digital writing. digitalRead() works on all pins. It will just round the analog value received and present it to you. If analogRead(A0) is greater than or equal to 512, digitalRead(A0) will be 1, else 0. digitalWrite() works on all pins, with allowed parameter 0 or 1. digitalWrite(A0,0) is the same as analogWrite(A0,0) , and digitalWrite(A0,1) is the same as analogWrite(A0,255) analogRead() works only on analog pins. It can take any value between 0 and 1023. analogWrite() works on all analog pins and all digital PWM pins. You can supply it any value between 0 and 255. The analog pins let you read/write analog values - basically, instead of giving out a voltage of 0 or 5 (as with digital), they can give a range of voltages between 0 and 5 (both as input and output). Note that the voltage during analog output is only the observed voltage with a multimeter. In reality, the analog pins send pulses of 0V and 5V signals to ...

C Function To Convert Float To Byte Array

Answer : Easiest is to make a union: #include <stdio.h> int main(void) { int ii; union { float a; unsigned char bytes[4]; } thing; thing.a = 1.234; for (ii=0; ii<4; ii++) printf ("byte %d is %02x\n", ii, thing.bytes[ii]); return 0; } Output: byte 0 is b6 byte 1 is f3 byte 2 is 9d byte 3 is 3f Note - there is no guarantee about the byte order… it depends on your machine architecture. To get your function to work, do this: void float2Bytes(byte bytes_temp[4],float float_variable){ union { float a; unsigned char bytes[4]; } thing; thing.a = float_variable; memcpy(bytes_temp, thing.bytes, 4); } Or to really hack it: void float2Bytes(byte bytes_temp[4],float float_variable){ memcpy(bytes_temp, (unsigned char*) (&float_variable), 4); } Note - in either case I make sure to copy the data to the location given as the input parameter. This is crucial, as local variables will not exist after you return (alt...

Can I Output A HDMI Signal With An Arduino?

Answer : No, not directly. Arduinos just don't have the horsepower to do such a task. For this project, I would recommend using a Raspberry Pi. Take a look at this awesome blog post by Joonas Pihlajamaa on using a Raspberry Pi as a Arduino HDMI shield. Please see Chrontel's products at www.chrontel.com: CH7035 - TTL to HDMI output. CH7026 - TTL to CVBS. CH7033 - TTL to VGA and HDMI. CH7034 - TTL to VGA. CH7322 - HDMI CEC. Their TTL input supports RGB 8-8-8. 5-6-5, YCrCb 4:2:2, ITU656, etc. I think the Arduino can use their MCU interface to write graphics data to their frame buffer directly. On-chip scaler can scale frame buffer content to all HDMI output resolutions like 1080P.

AnalogRead(0) Or AnalogRead(A0)

Answer : To answer Tyilo's specific questions: analogRead(5) and digitalRead(5) will read from two different places. The former will read from analog channel 5 or A5 and the latter will read from pin 5 which happens to be a digital pin. So yes, if you want to read an analog pin with digitalRead you should be using A5 . Why? analogRead requires a channel number internally but it will allow you to give it a pin number too. If you do give it a pin number it will convert it to its corresponding channel number. As far as I can tell analogRead is the only function which uses a channel number internally, is the only one to allow a channel number, and is the only function with this undocumented pin-to-channel conversion. To understand this let's start off with some examples. If you want to use analogRead on the first analog pin A0 you can do analogRead(0) which uses the channel number or analogRead(A0) which uses the pin number. If you were to use the pin number ...