Arduino Forum

International => Portugues => Topic started by: Tuba121 on Mar 15, 2013, 01:44 am

Title: Parque de Estacionamento Utilizando o Arduino Uno
Post by: Tuba121 on Mar 15, 2013, 01:44 am
Olá a todos

Estou para vos pedir uma ajudinha com um projecto escolar que eu estou a fazer e estou a utilizar um Arduino Uno. O projecto é um parque de estacionamento de 8 lugares com um indicador de parque livre e de parque completo e com uma entrada e uma saída (utilizando servos) e se possível um display de 7 segmentos (que indicá-se o número de vagas existentes no parque). A minha ideia era que quando um carro estivesse para entrar no parque a barreira abria durante 5 segundos e passado esse tempo a barreira fecha e é adicionado esse carro à contagem e na saída quando um carro está para sair a barreira abre e fecha passados 5 segundos e é retirado um carro à contagem. Quando o parque está cheio, acende a luz vermelha e logo que sai um carro a luz vermelha apaga-se e acende-se a luz verde.

Será que me podem dar uma ajudinha?
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: bubulindo on Mar 15, 2013, 06:50 am
O que é que já fizeste?
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: Tuba121 on Mar 15, 2013, 11:20 am
Apenas fiz pequenos testes utilizando um programa de um parque de estacionamento que me deram, mas esse programa apenas é o indicador de parque livre e parque completo.
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: bubulindo on Mar 15, 2013, 11:35 am
Ok...

Nota, nós não estamos aqui para fazer os teus trabalhos. Estamos aqui para tirar dúvidas. Quando te perguntei o que já tinhas feito era para ver se conseguia "arrancar" perguntas em concreto sobre o que tens dúvidas e poder ajudar-te dessa forma.

Perguntar para te ajudarem num projecto sem dizeres o que já tens feito ou onde ficaste encalhado, vai ser mais um post aqui a ganhar pó. Vê o que te falta, o que não sabes em concreto e pergunta. Há por aqui imensa gente capaz de te responder. :)
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: Tuba121 on Mar 15, 2013, 11:53 am
Eu também não estou aqui para fazerem o trabalho por mim. Eu já fiz o programa, só que quando eu coloco para passar o programa para o Arduino ele dá me uns erros de variáveis. Em anexo coloco o programa do Arduino, para ver se alguém consegue ver de onde vem os erros.

P.S. Eu sou novo no mundo Arduino tenho 2 ou 3 semanas de experiencia, ainda não sei muito.
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: bubulindo on Mar 15, 2013, 12:03 pm
Ninguém disse que estavas aqui para sermos nós a fazer o programa... mas a verdade é que não deste muita informação ou sequer questões para te podermos ajudar.

Coloca aqui os erros e o código que estás a usar para podermos ver onde está o erro.
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: Tuba121 on Mar 15, 2013, 12:23 pm
Aqui está o programa!!!
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: bubulindo on Mar 15, 2013, 01:34 pm
O que esperas atingir com isto:

Code: [Select]

const int One = 3 , 4;

const int Two = 2 , 3 , 5 , 6 , 8;

const int Three = 2 , 3 , 4 , 5 , 8;

const int Four = 3 , 4 , 7 , 8;

const int Five = 2 , 4 , 5 , 7 , 8;

?
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: Mortis on Mar 15, 2013, 01:38 pm

O que esperas atingir com isto:

Code: [Select]

const int One = 3 , 4;

const int Two = 2 , 3 , 5 , 6 , 8;

const int Three = 2 , 3 , 4 , 5 , 8;

const int Four = 3 , 4 , 7 , 8;

const int Five = 2 , 4 , 5 , 7 , 8;

?


Eu ia colocar a mesma questão, quando atualizei a página você tinha sido mais rápido ;)
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: bubulindo on Mar 15, 2013, 01:49 pm
Eu sou o flash do Fórum do Arduino. LOL

Se calhar isto é sinal que passo demasiado tempo aqui... Por falar nisso, fiquem bem. Vou passar o fim de semana fora de casa. :)
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: Mortis on Mar 15, 2013, 01:57 pm

Eu sou o flash do Fórum do Arduino. LOL

Se calhar isto é sinal que passo demasiado tempo aqui... Por falar nisso, fiquem bem. Vou passar o fim de semana fora de casa. :)


Ok The Flash! kkkk

Tirar uma folga é verdadeiramente bom! ;)

Eu responderei a todas as pessoas e quando voltares tu corriges tudo o que eu disser, ok? rs
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: Tuba121 on Mar 15, 2013, 02:34 pm
essa linguagem era para o display de 7 segmentos.
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: hugo007 on Mar 15, 2013, 11:38 pm
Ola vejo muitas coisas menos corretas.
Quote
if(digitalRead(IncreasePin)==LOW&&COUNTER<maxCar)
{
COUNTER++;
    info();
    delay(wait);
  }

na loop tens isto, a intençao é boa mas o que irá acontecer se mantiveres o pino em baixo?
A loop é mais  rapida que tu ou o sensor e isso ira logo atingir o valor maximo mesmo antes do sensor ou botao ser solto.
Tens de encravar a funçao para que isso nao aconteça
O que te aconcelho é antes de partires para a programaçao desenharem numa folha um algoritmo de como o programa tem de funcionar e partires cada parte em pequenas funçoes,depois partes para o programa.
Tipo funçao detecta carro, funçao verifica lugar parque, funçao semaforo ...
No teu codigo que postaste estas a repetir muitas vezes a mesma coisa que pode ser reutilizada.
Pensa primeiro nisso

Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: Tuba121 on Mar 16, 2013, 12:11 am
como assim fazer o algoritmo no papel?
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: Mortis on Mar 16, 2013, 07:53 pm
Tuba,

O que o HugoPT quer dizer é que o loop corre muito rápido e se fizeres um teste apertando e soltando o botão, o teu count pode ser incorreto, pois o loop pode registrar o estado LOW mais de uma vez em um único pressionamento.

dê uma olhada nesse exemplo, ele melhora o tratamento do pressionamento (ou do sensor que enviará o sinal):
Code: [Select]
http://arduino.cc/en/Tutorial/ButtonStateChange

Outro método que pode utilizar é esse:
http://arduino.cc/en/Reference/AttachInterrupt

Sobre o todo, como o HugoPT disse, faz cada parte isoladamente, testa o pressionamento do botão (ou disparo do sensor), depois a movimentação dos servos, o display, etc e depois junta todo o código gradativamente, esse é o caminho mais fácil e prático (digo por experiência própria ^^).

sobre o código abaixo:

O que esperas atingir com isto:

Code: [Select]

const int One = 3 , 4;

const int Two = 2 , 3 , 5 , 6 , 8;

const int Three = 2 , 3 , 4 , 5 , 8;

const int Four = 3 , 4 , 7 , 8;

const int Five = 2 , 4 , 5 , 7 , 8;

?


Presumo que desejavas era o que tem neste link:
Code: [Select]
http://www.hacktronics.com/Tutorials/arduino-and-7-segment-led.html

Se algo não funcionar ou se tiveres alguma dúvida, retorna aqui que tentamos te ajudar.
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: hugo007 on Mar 16, 2013, 10:19 pm
Quote
como assim fazer o algoritmo no papel?

A minha sugestao e desenhares tipo com baloes e instruçoes de decisao num papel o diagrama que o teu programa tem de fazer e resolver mediante o desafio que tens.
Partes cada bocado num pequeno problema e vais criando funçoes para cada uma delas
Por exemplo no teu codigo que postaste estas a repetir a mesma coisa imensas vezes para ligares os leds com o numero de lugares no parque.Para contornar isso podes usar uma variavel de 8 bits e mandares essa variavel directamente no Porto onde tens os leds.Assim podes usar uma funçao para la escrever de uma forma simples:
Code: [Select]

void writeVariableToPortB(uint8_t valueToPort)
{
DDRB = 0x1F;        //seta os 5 bits menos significativos do porto B como outputs
PORTB = valueToPort;             //escreve valor na PortaB
}



Ve esta pequena tabela de verdade que fiz no excel sobre os valores que a variavel que passas para a funçao terá de ter:
Ou seja se quiseres ligar o led 5 passas para a funçao uma variavel com o valor de 32 por exemplo:
Code: [Select]


uint8_t portVariable = 1;

void setup()
{
DDRB = 0x1F; //seta os 5 bits menos significativos do porto B como outputs 0b00011111
/*O portB tem como pinos no Atmega328 a seguinte ordem:
bit0 do PortoB ----->Pino 8 no arduino
bit1 do PortoB ----->Pino 9 no arduino
bit2 do PortoB ----->Pino 10 no arduino
bit3 do PortoB ----->Pino 11 no arduino
bit4 do PortoB ----->Pino 12 no arduino*/
}
void loop()
{
 for(uint8_t i = 0; i<=4;i++)
{
  writeVariableToPortB(portVariable);
  portVariable = portVariable * 2;
  delay(1000);
  if(portVariable == 64)portVariable = 1;//Renicia o ciclo
}

}
void writeVariableToPortB(uint8_t valueToPort)
{
PORTB = valueToPort;//Escreve o valor no PortoB
}

Este codigo deverá fazer correr os 5 leds e devera dar para resolveres essa repetiçao de codigo.Agora resolves os outros erros ...


Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: Tuba121 on Mar 18, 2013, 09:48 pm
Desculpa, mas não estou a perceber o isso dos valores decimais.
E isso do algoritmo é tipo isto:
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: hugo007 on Mar 18, 2013, 10:12 pm
Quote
Desculpa, mas não estou a perceber o isso dos valores decimais.

Esses valores em decimal e a conversao de binario para decimal.Se pegares numa calculadora em modo programaçao (usa a do windows) e colocares la 10000 no formato binario e carregaresm em DEC ele converte esse numero para decimal que é o mesmo valor mas numa representaçao diferente
Quote
E isso do algoritmo é tipo isto:

Nao bem, é mais algo assim:


Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: hugo007 on Mar 18, 2013, 10:59 pm
Quote
desculpa estar a pedir te isto mas eu tou desesperado é que nao entregar esse projecto concluido no inicio do 3º periodo tenho que me inscrever para a recuperação do modulo e isso vai custar me 7 euros.

Nao vou fazer isso pois isso e contra tudo neste forum.Se pedires ajudar sim irei ajudar nas tuas DUVIDAS, mas nao irei fazer isso que me pedes.
Se eu te fizer isso nao vais perceber no final e nao vais ganhar nada nem aprender.Nao penses dessa forma,nao encares esse projecto como algo que tens de fazer a pressa e depois arrumou pra sempre.Da valor ao que estas a fazer e dedica-te a ele.
Acredita que eu no teu lugar preferia chumbar o modulo se quando o estivesse para apresentar nao entende-se o que la tinha feito
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: Tuba121 on Mar 18, 2013, 11:11 pm
Tá bem mas eu depois de isso completo eu ia pedir que me ensinasses a fazer essas coisas, pois o professor diz que se eu fizer bem o trabalho me oferece o arduino.
E desculpa, por isto mas é que eu estou um pouco às cegas com o projecto, apenas tenho as ideias de o que queria que acontecesse no parque, mas nao percebo patavina da linguagem que deveria fazer, será que me podes ensinar a fazer a linguagem para este projecto?
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: hugo007 on Mar 18, 2013, 11:18 pm
O teu programa tem de correr de uma forma logica e estruturada.Quando digo faz o algoritmo é para meteres isso explicado em papel para entenderes o que estas a fazer e qual o proximo passo.Elabora um fluxograma com o que tens de fazer para controlar o parque.
Desenha com instruçoes de decisao
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: Tuba121 on Mar 18, 2013, 11:47 pm
vou fazer o fluxograma agora mesmo, podes me dar uma ajudinha a fazer o programa depois?
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: bubulindo on Mar 19, 2013, 09:40 am

desculpa estar a pedir te isto mas eu tou desesperado é que nao entregar esse projecto concluido no inicio do 3º periodo tenho que me inscrever para a recuperação do modulo e isso vai custar me 7 euros.


Fazer a disciplina sem entenderes o que fizeste vai custar-te muito mais. :(

Que é que aprendeste de programação?
Title: Re: Parque de Estacionamento Utilizando o Arduino Uno
Post by: Tuba121 on Mar 19, 2013, 01:55 pm
Aprendi os Sistemas de Numeração, Circuitos Lógicos, Circuitos Combinatórios, Circuitos Sequenciais e um pouco da Arquitectura dos Microcontroladores.