Go Down

Topic: Rotary Switch Colour Selector help needed (Read 1 time) previous topic - next topic

pekkaa

#15
Oct 23, 2012, 09:15 pm Last Edit: Oct 23, 2012, 09:35 pm by pekkaa Reason: 1


I don't think a rotary switch is as easy as you think... it would need quite a lot of code and I bet there's no library for it.

A rotary encoder library with examples is probably easier for a novice to get working.



I don't think a rotary switch is as complicated as you think  ;) I already provided guidelines for the sketch in reply #1. If the OP has any programming experience at all, he will probably write the code in the time it would take to find a suitable library for a rotary encoder.
(edit: typo)

pekkaa


Well from a programming stand point, I think a seven level deep block of nested if-then-else statements evaluating if each pin is TRUE would be fairly simple.  However, it would take up quite a few lines by itself and be somewhat cumbersome if you ever had to debug it. ;)  Furthermore it's perhaps the most compact ways to express the logic without getting into rather arcane tricks.


Why on earth would it need to be anything that complicated? A simple loop through the pins is enough, assuming he uses subsequent (is this the right word?) pins.

Code: [Select]

byte colorNum = 0;
for (byte pin=2; pin <= 8; pin++) {
    if (digitalRead(pin) == LOW) {
      colorNum = pin;
      break;
   }
}
if (colorNum) color = colorMap[colorNum];

fungus



Well from a programming stand point, I think a seven level deep block of nested if-then-else statements evaluating if each pin is TRUE would be fairly simple.  However, it would take up quite a few lines by itself and be somewhat cumbersome if you ever had to debug it. ;)  Furthermore it's perhaps the most compact ways to express the logic without getting into rather arcane tricks.



Ever heard of the 'switch' statement?
No, I don't answer questions sent in private messages (but I do accept thank-you notes...)

fungus


I don't think a rotary switch is as complicated as you think  ;) I already provided guidelines for the sketch in reply #1. If the OP has any programming experience at all, he will probably write the code in the time it would take to find a suitable library for a rotary encoder.
(edit: typo)


I agree.

Plus ... you won't have five clicks on the dial where nothing happens.
No, I don't answer questions sent in private messages (but I do accept thank-you notes...)

Far-seeker


Ever heard of the 'switch' statement?


Yes, but a case-switch block involving seven cases, or even just six if one color is used as a default case, is going to be about the same size as a nested if-then-else block.  :P 

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy