Bom dia pessoal, esse é meu primeiro post, estou fazendo uma maquina bobinadeira de captadores magnéticos,  a máquina é simples, consiste de um motor ligado a uma polia onde o captador é fixado, nesse motor tem um encoder com um contador de voltas e de fente p/ o motor uso um servo motor p/ definir a posição do carretel onde o fio está sendo enrolado.

Preciso postar informações antes do serviço começar, vou usar variáveis que definem a quantidade máxima de voltas, posicionamento inicial e final do servo e mostrar a quantidade de voltas p/ controle, resolvi usar a tv para postar as informações, aqui que veio o problema, quando coloco o servo motor p/ funcionar a tv não apresenta imagem. já usei uma biblioteca alternativa p/ o servo, e mesmo assim nada.

segue meu código apenas com a função de contador, tv e a função de servo, grande abraço a todos. 


#include <TVout.h>
#include <fontALL.h>
#include <PWMServo.h>
PWMServo myservo; //SERVO
int val; //ENCODER
int encoder0PinA = 3; //ENCODER
int encoder0PinB = 4; //ENCODER
int encoder0Pos = 0; //ENCODER
int encoder0PinALast = LOW; //ENCODER
int n = LOW; //ENCODER
int pos = 35; //SERVO
int sentido = 0; // se sentido for 0, incrementar
// caso contrario, decrementar.
TVout TV; // Variável TV

void setup() {

pinMode (encoder0PinA, INPUT); //ENCODER
pinMode (encoder0PinB, INPUT); //ENCODER

TV.begin(NTSC, 120, 96);
TV.select_font(font6x8);


myservo.attach(SERVO_PIN_B);


}

void loop() {

// Contador

n = digitalRead(encoder0PinA); 
if ((encoder0PinALast == LOW) && (n == HIGH)) {
if (digitalRead(encoder0PinB) == LOW) {
encoder0Pos--;
} else {
encoder0Pos++;
}

// TV

TV.clear_screen();
TV.println(0, 0, "Pickup Winder 1.0");
TV.println(0, 20, "Turns:");
TV.println(40, 20, encoder0Pos);
TV.delay(0);

//Servo

if (sentido == 0) {
pos++;
if (pos >= 65) {
sentido = 1;
}
}

else if (sentido != 0) {
pos--;
if (pos <= 35) {
sentido = 0;
}
}

myservo.write(pos);

}
encoder0PinALast = n; 
}

Exibições: 312

Responder esta

Respostas a este tópico

Cara, se você tá começando com o arduino,  utilizar o TVOUT com uma TV é algo não muito indicado.

  O Tvout é um experimento,  algo tipo experimento escolar em desenvolvimento,  ele não é um produto pronto e comercial.

   Se você deseja fazer uma montagem mais profisional com display parta para displays reais,  existem diversos exemplos desde os mais tradicionais e faceis como os 16x2 até o meu favorito para pequenas montagens que é o NOKIA 5110.

   Agora se você tá a fim de gastar um pouco mais,  mas tambem tem que ler, estuda ai existem os displays UTFT que são displays que normalmente tem com touch screen ou não,   ele normalmente vão de 1,8 pol até 9 polegadas, até onde já encontrei,  eu mesmo comprei um de 7 polegadas,  mas ainda não sei usar ele direito.

   Logo,  parta pra algo que não vai lhe trazer problemas,  faça o certo.

 

 Olá pessoal. ^^

 Além das boas dicas do Weider, eu iria indicar usar diplays de 7 segmentos. Dá para vê-los de longe, e usar cores diferentes para diferentes informações.

O que conheço sobre esse tipo de sistema que gera imagens para a TV, é que o tempo usado para gerar o sinal de vídeo composto é "super crítico", ainda mais pelo tempo de processamento do Arduino. Basicamente, a todo instante ele precisa estar atendendo as interrupções inerentes ao controle do sincronismo da TV.

Como você está usando um servo, aparentemente ele pode estar parando o processamento das interrupções do vídeo, para atender as interrupções do servo.

Para não desistirmos da idéia, você pode dividir as funções em mais de um Arduino, ficando o primeiro responsável pelas informações de vídeo, e para isto ele recebe as informações pela serial uart. E um segundo Arduino para fazer o controle do servo e processar as demais variáveis.

Caso tenha paciência, você pode abrir todas as bibliotecas e tentar modificar as coisas para que não ocorra nenhum "gargalo" no processamento do vídeo. E em um nível melhor ainda, até mesmo abandonar a biblioteca do Arduino e programar diretamente para o Atmega328.

Espero ter ajudado. ^^

T++.

Olá Wider, então estava usando a tela do nokia, mas queria usar o tv-out, mas se não der volto p/ telinha, a ideia do Daniel não é ruim, de usar 2 arduinos, o custo do ci não é alto, ou mesmo usar um servo controller BCD e mandar as informações p/ ele no setup do código, pq uma vez q definido o valor o servo vai trabalhar constantemente com a mesma função.

obrigado pelas dicas pessoal, gd abraço, assim que montar posto os resultados.

Bom dia amigo, ainda esta com duvidas sobre o tvout/

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2020   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço