Showing results for 
Search instead for 
Did you mean: 

Channel OFF/ON program



I'm building a program which send a command to microcontroller, for instance: send number '1' --> channel ADC 1 OFF. And there is my problem: I have 4 channels, which measure ADC voltage on input. I really don't like soldering (:D) so I'd like to turn praticular channel on/off in my program by sending a command to microcontroller. 4 channels, 2 different status -> 16 different combinations. Have you any idea how simplify this process? Maybe I should send a xxxx numeric (x - refers to state 1 OFF, 2 ON, example '1378', channel 1 ON, channel 2  ON, channel 3 ON, channel 9 OFF), and load it to frame in microcontroler?  Byte UDR, which is in charge of reception, have 8 bits, so I have to send '1378' one number by one and I can't do it. Any ideas? 🙂 

0 Kudos
Message 1 of 22
I don't get where 1378 comes from. Send hex as a single byte - 00, 01, 10, 11, etc.
0 Kudos
Message 2 of 22

But how I can transmit boolean values via VISA write? On the input is string only. 



Here it is, my inefficient solution:




0 Kudos
Message 3 of 22
You can use a U8 and the byte array to string and then send 4 bytes.
0 Kudos
Message 4 of 22
Clicked too soon.

Or send a single byte. The first four bits could be the channel and the last four the state. OR them together.
0 Kudos
Message 5 of 22

What is 'U8'? Sending 4 bytes (0,1), will complicate situation - I can't recognise if it is channel 1 or 2 etc, because my Atmega will read only 1 byte and then another byte. It will be neccessary to use separator or something like that 

0 Kudos
Message 6 of 22

Ok, seems good. But how I can write information about channel and state to 1 byte array? Array of 8 booleans? Array of booleans will lead to string conversion error 

0 Kudos
Message 7 of 22
A U8 is an integer - 8 bits.

I just realized that you don't even need to send the channel. You only need the state information with the last four bits. Channel 1 is either 0x01 for on, channel 2 is 0x02 for on, channel 3 is 0x04 for on. Channel 4 is 0x08 for on.
0 Kudos
Message 8 of 22

You're smart, thanks! But there is problem in conversion of array of bytes to string...



0 Kudos
Message 9 of 22

And of course value 0111 can't be converted to numeric

0 Kudos
Message 10 of 22