botão ele controlasse algum servo, o braço fosse a 140 graus ficasse por um tempo e depois voltasse pra 12 graus por exemplo.
Eu tentei o botão aciona o servo ligado no pino 10 porém o braço vai ate o limite e fica forçando pra uma direção só, e mesmo mudando os graus não consigo programar para oque o servo faça depois do botão pressionado, vocês podem me ajudar?olha meu codigo:#include <Servo.h>void setup() { Serial.begin(9600); //Inicia a serial com um baud rate de 9600} void loop(){ long tecladoA5=0; //Cria variável para ler o teclado ligado ao pino A5 for(int i=0;i<100;i++) //Laço para fazer 100 leituras { tecladoA5 = tecladoA5+analogRead(A5); //Soma a leitura anterior com a leitura atual de A5 } tecladoA5 = tecladoA5/100; Serial.print("Teclado A5 = "); //Imprime no Serial Monitor "Teclado A5 = " Serial.println(tecladoA5); //Imprime o valor de A5 Serial.print("\n\n"); //Pula 2 linha no Serial Monitor delay(100); //Aguarda 100 milissegundos //ate aqui tudo bem o codigo indentifica os botões e consigo escolher em qual pino ligar o servo e qual botão vai acioná-lo //o problema é que a função abaixo não funciona como deveria e o servo fica ligado direto pra um sentido só //----------------------FIM DA FUNÇÃO DO SERVO 1-------- if(tecladoA5 == 916) //------FUNÇÃO PARA O SERVO EXECUTAR QUANDO CLICADO O BOTÃO DE VALOR 916--------{ Servo motor; motor.attach(10); //pino do sinal que o servo esta plugadoint i;for(i=0;i<170;i++) { //angulo de movimento motor.write(i); delay(40); //velocidade que o braço se move}delay(1000); //demora 0,8 segundosfor(i=150;i>0;i--) { //angulo de movimento motor.write(i); delay(40); //velocidade que o braço se move}delay(1000); //demora 0,8 segundos}}…
16mil e um Int guarda até 64 mil temos uns bits sobrando.
Algo como:
Vc criando variaveis:
#define T4 0x0000;
#define T8 0x4000;
#define T16 0x8000;
Na matriz colocaria:
C4+T4,C4+T16, etc...
E lá na hora de tocar,
para obter a frequencia:
freq=valor & 0x3ff; // isso limpa os bits mais altos.
tempo= valor >>14; // isso roda os bits de forma que fica em tempo apenas os 2 mais significativos.
Tempo = 2^(tempo+2); // isso deve converter 0, 1 e 2 para para 4, 8 e 16 pq são (2*2), (2*2*2) e (2*2*2*2)
Na duvida vai de switch case ou if().
Se não errei nada, não testei... Acho que vira uma tabela só.
…
Adicionado por Eduardo ao 8:04 em 6 fevereiro 2019
Oi amigos ... Alguem ae me ajuda a ligar 2 motores dc no arduino ?? sendo q eu tenho 2 npn 2 pnp 2 motores e resistors de 100 ohms e de 300 ohms .... quem pdr me ajudar namoral mt obrg
Adicionado por Leulin Araujo ao 20:09 em 30 abril 2013
(inicial) + C (atual) = 0 + 2 = 2.
Num segundo momento, em que o C inicial for 2 e o C atual for 2 novamente, resultará em 4. Num terceiro momento, em que o C inicial for o 4 e somar 2, D vai ser 6. E assim por diante.…