collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: Ajuda  (Lida 6048 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline g3net

  • Mini Robot
  • *
  • Mensagens: 4
Ajuda
« em: 15 de Novembro de 2016, 08:53 »
Boas pessoal,

Estou á procura de alguém que consiga programar ATMEL/AVR para um projecto que estou a desenvolver, temos tudo feito só algumas dificuldades agora com a compilação da rotina. Somos de Lisboa, aguardo vossas respostas obrigado.

Offline KammutierSpule

  • Mini Robot
  • *
  • Mensagens: 1.481
Re: Ajuda
« Responder #1 em: 15 de Novembro de 2016, 10:22 »
Estas num forum, podes colocar directamente o problema e eventualmente alguem que saiba pode responder logo.

ou estas à procura de ajuda presencial?

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Ajuda
« Responder #2 em: 15 de Novembro de 2016, 10:58 »
Mas dificuldades ao nivel de compilação em si?
Ou falta de know how na programação?
É Atmel mesmo ou é arduino(a usar o IDE/blibiotecas do mesmo)?

Sem mais informação é complicado de ajudar.

/tinfoilHat:
Tens um ip engraçado..
« Última modificação: 15 de Novembro de 2016, 11:11 por senso »
Avr fanboy

Offline g3net

  • Mini Robot
  • *
  • Mensagens: 4
Re: Ajuda
« Responder #3 em: 15 de Novembro de 2016, 20:25 »
Boas Pessoal,

A dificuldade que encontrei foi na compilação e não tou a conseguir ultrapassar, a rotina está feita em C e estou a usar o ATMEL STUDIO 7 para compilar e escrever no micro, mas começei por ter erros nas bibliotecas e agora tenho erros por falta de instruções.

É mesmo ATMEL e não ARDUINO estou a usar o micro controlador ATMEGA32L

O programa é:

#include <Mega32.h>
#include <delay.h>
#include <stdio.h>

#define begin {
#define end   }

#define terminator 15         
#define LCDwidth 16            
char lcd_buffer[17];

int pulse_counter;      

int light_timer;      

int pong_timer;         

int count;            

int v1, v2, v3, v4, v5, v6, v7;   

int avg;            

int total_count;      

int dist;            

char c;               

int timer;            

#asm
        .equ __lcd_port=0x15
#endasm

#include <lcd.h>

void light_flashing(void);

interrupt [TIM2_COMP] t2_compare(void)
begin
       if((count==0) || (count==4) || (count==8) || (count==12) || (count==16))// || (count==20))
      begin
         PORTB = 0xff;

      end
      if((count==2) || (count==6) || (count==10) || (count==14) || (count==18))// || (count==22))
      begin
            PORTB = 0xfe;

        if (count==2)
        begin
            pong_timer = 0;
          end
            TCNT1 = 0;
      end
      count++;
      if(count==700)
      begin
         count = 0;
            pulse_counter++;
      end

    pong_timer++;

end

void light_flashing(void)
begin
   light_timer++;
   if ((avg>0) && (avg <= 15))
     begin
        PORTA = 0x3f;
     end

     else if ((avg > 15) && (avg <= 20))
     begin
        PORTA = 0x1f;
     end

   else if ((avg > 20) && (avg <= 25))
     begin
        PORTA = 0x0f;
     end

     else if ((avg > 25) && (avg <= 30))
     begin
        PORTA = 0x07;
     end

     else if ((avg > 30) && (avg <= 35))
     begin
         PORTA = 0x03;
     end

     else if (avg > 35)
     begin
         PORTA = 0x01;

     end
end

void sound_gen(void)
begin
      if(timer==0)
      begin
           TCCR0=0;
      end
      if((avg>0) && (avg <= 15))
      begin
         if(timer==3)
         begin
            TCCR0 = 0x1c;
         end
         timer++;
         if(timer>=6)
         begin
             timer = 0;
         end
      end
      if((avg>15) && (avg <= 20))
      begin
         if(timer==5)
         begin
            TCCR0 = 0x1c;
         end
         timer++;
         if(timer>=10)
         begin
             timer = 0;
         end
      end
      if((avg>20) && (avg <= 25))
      begin
         if(timer==6)
         begin
            TCCR0 = 0x1c;
         end
         timer++;
         if(timer>=12)
         begin
             timer = 0;
         end
      end
      if((avg>25) && (avg <= 30))
      begin
         if(timer==7)
         begin
            TCCR0 = 0x1c;
         end
         timer++;
         if(timer>=14)
         begin
             timer = 0;
         end
      end
      if((avg>30) && (avg <= 35))
      begin
         if(timer==8)
         begin
            TCCR0 = 0x1c;
         end
         timer++;
         if(timer>=16)
         begin
             timer = 0;
         end
      end
      if(avg>35)
      begin
         if(timer==9)
         begin
            TCCR0 = 0x1c;
         end
         timer++;
         if(timer>=18)
         begin
             timer = 0;
         end
      end

end


void main(void)
begin

     TCCR2=0x09;         
   OCR2 = 49;

   TCCR0 = 0;
   OCR0 = 7;

   TIMSK = 0x80;

   DDRB = 0x01;
   PORTB = 0x00;

   DDRA = 0xff;
   PORTA = 0;

     pulse_counter = 0;

   light_timer = 0;
   
    pong_timer = 0;

    count = 0;

    c=1;

    v1=0;
    v2=0;
    v3=0;
    v4=0;
    v5=0;
    v6=0;
    v7=0;

    total_count = 0;

    timer = 0;

   
   lcd_init(LCDwidth);         
   lcd_clear();
   PushState = NoPush;

      lcd_clear();

      lcd_gotoxy(0,1);
      sprintf(lcd_buffer,"%-i",value);
      lcd_puts(lcd_buffer);

      lcd_gotoxy(0,0);
      lcd_putsf("BIKE ALERT ULTRASONIC 2016");

   lcd_init(LCDwidth);         
      lcd_clear();

   #asm
   sei
   #endasm

   while(1)
   begin

      if ((count>=40) && (PINB.1))
      begin

         v1=pong_timer;
         v1 = ((int)(((double)v1)*.2125)/2.0);     
         
         pulse_counter = 0;

         avg = (v1+v2+v3+v4+v5+v6+v7)/7;
         v2 = v1;
         v3 = v2;
         v4 = v3;
         v5 = v4;
         v6 = v5;
         v7 = v6;
         total_count++;

         sound_gen();
         
         if ((c==1) && (total_count==7))
         begin
            lcd_clear();
            lcd_gotoxy(0,0);
            sprintf(lcd_buffer,"%-i",dist);
            lcd_puts(lcd_buffer);
            lcd_gotoxy(0,1);
            sprintf(lcd_buffer,"%-i",v1);
            lcd_puts(lcd_buffer);

            lcd_gotoxy(0,0);
            lcd_putsf("Distancia = ");
            lcd_gotoxy(12,0);
            sprintf(lcd_buffer,"%-i",avg);
            lcd_puts(lcd_buffer);
            c++;
            total_count = 0;
         end
   
         if ((c==2) && (total_count==7))
         begin
            lcd_gotoxy(8,0);
            sprintf(lcd_buffer,"%-i",avg);
            lcd_puts(lcd_buffer);
            c++;
            total_count = 0;
         end

         if ((c==3) && (total_count==7))
         begin
            lcd_gotoxy(14,0);
            sprintf(lcd_buffer,"%-i",avg);
            lcd_puts(lcd_buffer);
            c++;
            total_count = 0;
         end

         light_flashing();
      end

      begin
         PORTA = 0x00;
         TCCR0 = 0;
      end

   end
end

Online jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.947
  • NERD!
Re: Ajuda
« Responder #4 em: 15 de Novembro de 2016, 20:46 »
Esse código é ilegível.  :o
Substituir parte da linguagem com #defines é para ninguém conseguir tocar no código. A ajuda que precisam vai para além do que se dá num fórum, é trabalho para ser remunerado. I'm out  :-X

Offline g3net

  • Mini Robot
  • *
  • Mensagens: 4
Re: Ajuda
« Responder #5 em: 15 de Novembro de 2016, 22:52 »
Boas

Não nos importamos k seja renumerado, pois temos de apresentar o prototipo e precisamos de adaptar ainda melhor o software ao hardware que ja temos todo feito e testado por blocos e estamos presos por isto.

Se alguém tiver interessado e for de Lisboa digam que marcamos uma reuniao onde quiserem, obrigado.

Offline samc

  • Mini Robot
  • *
  • Mensagens: 442
Re: Ajuda
« Responder #6 em: 15 de Novembro de 2016, 22:59 »
Realmente fica difícil ajudar com algo assim tão vago e com tão poucos comentários no código...
Mas da leitura do código só fiquei foi a pensar o que é que o pessoal tem contra as chavetas!? Só me lembra código em Pascal  ;)

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Ajuda
« Responder #7 em: 15 de Novembro de 2016, 23:40 »
Realmente esse begin e esse end :/
O que é que está ligado a cada pino?
O que é que não funciona?

Estão a usar algum cristal externo?
Se sim, de quantos Mhz?
Há esquema que possam/queiram aqui postar?
Ajudava um bocadinho.
O begin e o end a substituir {} não faz qualquer sentido e só causa mais confusão a ler o código.
Não precisam de #asm sei quando podem simplesmente usar sei();
O código tanto do pisca leds e do som podem ser BASTANTE simplificados, dado que um é á primeira vista uma comparação com meia duzia de valores, bastava ler meia duzia de valores de um array e não precisam de ligar e desligar o timer um monte de vezes é só mudar o valor do OCR para 0 ou 255 conforme o que lá têm pendurado para não fazer mais barulho, mas deve ser um buzzer.
O pisca pisca dos leds é right shift( >> )
Que biblioteca de lcd estão a usar?
Usar um equ __ para definir algo que o mais certo é ser definido no .h da biblioteca para o lcd é no minimo meio estranho :/

Está a usar um sonar com saida pwm e a usar input capture para contar pulsos e a partir dai ter um valor de distância?

Incrementam o valor de c três vezes e depois nunca mais fazer nada á variável nem a voltam a meter a 1 para o primeiro if voltar a dar true, que provavelmente deve ser um dos vossos muitos problemas com o código.

Código ligeiramente formatado e com o minimo de comentários..
Código: [Seleccione]
#include <Mega32.h>
#include <delay.h>
#include <stdio.h>
#include <avr/interrupt.h>

#define terminator 15         
#define LCDwidth 16

char lcd_buffer[17];

int pulse_counter;     
int light_timer;     
int pong_timer;         
int count;           
int v1, v2, v3, v4, v5, v6, v7;   
int avg;           
int total_count;     
int dist;           
char c;               
int timer;           

#asm
.equ __lcd_port=0x15
#}asm

#include <lcd.h>

void light_flashing(void);

interrupt [TIM2_COMP] t2_compare(void){

if((count==0) || (count==4) || (count==8) || (count==12) || (count==16)){ // || (count==20))
PORTB = 0xff;
}

if((count==2) || (count==6) || (count==10) || (count==14) || (count==18)){ // || (count==22))
PORTB = 0xfe;

if (count==2){
pong_timer = 0;
}
TCNT1 = 0;
}

count++;

if(count==700){
count = 0;
pulse_counter++;
}
pong_timer++;

}

void light_flashing(void){

light_timer++;
if ((avg>0) && (avg <= 15)){
PORTA = 0x3f;
}

else if ((avg > 15) && (avg <= 20)){
PORTA = 0x1f;
}

else if ((avg > 20) && (avg <= 25)){
PORTA = 0x0f;
}

else if ((avg > 25) && (avg <= 30)){
PORTA = 0x07;
}

else if ((avg > 30) && (avg <= 35)){
PORTA = 0x03;
}

else if (avg > 35){
PORTA = 0x01;

}
}

void sound_gen(void){

if(timer==0){
TCCR0=0;
}

if((avg>0) && (avg <= 15)){
if(timer==3){
TCCR0 = 0x1c; //0001 1100
//_BV(COM00)|_BV(WGM01)|_BV(CS02)
//CTC mode
//Toggle OC0 on compare match
//CLK/256 prescaller
//
}
timer++;
if(timer>=6){
timer = 0; //timer off
}
}

if((avg>15) && (avg <= 20)){
if(timer==5){
TCCR0 = 0x1c;
}
timer++;
if(timer>=10){
timer = 0;
}
}
if((avg>20) && (avg <= 25)){
if(timer==6){
TCCR0 = 0x1c;
}
timer++;
if(timer>=12){
timer = 0;
}
}

if((avg>25) && (avg <= 30)){

if(timer==7){
TCCR0 = 0x1c;
}
timer++;
if(timer>=14){
timer = 0;
}
}

if((avg>30) && (avg <= 35)){
if(timer==8){
TCCR0 = 0x1c;
}
timer++;
if(timer>=16){
timer = 0;
}
}
if(avg>35){
if(timer==9){
TCCR0 = 0x1c;
}
timer++;
if(timer>=18){
timer = 0;
}
}
}


void main(void){

TCCR2=0x09;     //0000 1001 _BV(WGM21)|_BV(CS20)
//Timer 2 in CTC MODE with OCR2 as TOP
//No prescalling of CLK
//
OCR2 = 49; //6us period(at 8Mhz) ???

TCCR0 = 0; //Free runing timer
OCR0 = 7;

TIMSK = 0x80; //_BV(OCIE2)  Timer/Counter2 Output Compare Match Interrupt Enable

DDRB = 0x01;
PORTB = 0x00;

DDRA = 0xff;
PORTA = 0;

pulse_counter = 0;

light_timer = 0;

pong_timer = 0;

count = 0;

c=1;

v1=0;
v2=0;
v3=0;
v4=0;
v5=0;
v6=0;
v7=0;

total_count = 0;

timer = 0;


lcd_init(LCDwidth);
lcd_clear();
PushState = NoPush;

lcd_clear();

lcd_gotoxy(0,1);
sprintf(lcd_buffer,"%-i",value);
lcd_puts(lcd_buffer);

lcd_gotoxy(0,0);
lcd_putsf("BIKE ALERT ULTRASONIC 2016");

lcd_init(LCDwidth);         
lcd_clear();

sei();


while(1){

if ((count>=40) && (PINB.1)){

v1=pong_timer;
v1 = ((int)(((double)v1)*.2125)/2.0);

pulse_counter = 0;

avg = (v1+v2+v3+v4+v5+v6+v7)/7;
v2 = v1;
v3 = v2;
v4 = v3;
v5 = v4;
v6 = v5;
v7 = v6;
total_count++;

sound_gen();

if ((c==1) && (total_count==7)){
lcd_clear();
lcd_gotoxy(0,0);
sprintf(lcd_buffer,"%-i",dist);
lcd_puts(lcd_buffer);
lcd_gotoxy(0,1);
sprintf(lcd_buffer,"%-i",v1);
lcd_puts(lcd_buffer);

lcd_gotoxy(0,0);
lcd_putsf("Distancia = ");
lcd_gotoxy(12,0);
sprintf(lcd_buffer,"%-i",avg);
lcd_puts(lcd_buffer);
c++;
total_count = 0;
}

if ((c==2) && (total_count==7)){
lcd_gotoxy(8,0);
sprintf(lcd_buffer,"%-i",avg);
lcd_puts(lcd_buffer);
c++;
total_count = 0;
}

if ((c==3) && (total_count==7)){
lcd_gotoxy(14,0);
sprintf(lcd_buffer,"%-i",avg);
lcd_puts(lcd_buffer);
c++;
total_count = 0;
}

light_flashing();
}

//{ useless brakets
//
PORTA = 0x00;
TCCR0 = 0;
//}

}
}

Comecem a debitar respostas sff.
Isto é trabalho de quê?
PAP?
Universidade?(medo :/ )
Secundário?

Não, não vos vou bater, mas quero ter noção de que nivel de educação têm e de como vos posso responder para que entendam a coisa.
« Última modificação: 16 de Novembro de 2016, 00:16 por senso »
Avr fanboy

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Ajuda
« Responder #8 em: 16 de Novembro de 2016, 00:10 »
Esse código é ilegível.  :o
Substituir parte da linguagem com #defines é para ninguém conseguir tocar no código. A ajuda que precisam vai para além do que se dá num fórum, é trabalho para ser remunerado. I'm out  :-X

:%s/foo/bar/g
gg=G

E metade do horror fica bonito em 2 segundos  ;)
Avr fanboy

Offline Hugu

  • Mini Robot
  • *
  • Mensagens: 5.602
  • Keyboard not found. Press any key to continue.
    • [url=www.g7electronica.net]G7 Electrónica.net[/url]
Re: Ajuda
« Responder #9 em: 16 de Novembro de 2016, 01:44 »
alguém que lhe ensine ou que meta o código com bbcode pra código
(editar-lhe o post e meter o codigo)
« Última modificação: 16 de Novembro de 2016, 16:31 por Hugu »

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Ajuda
« Responder #10 em: 16 de Novembro de 2016, 01:51 »
Não deves ter visto a minha resposta..
Avr fanboy

Offline g3net

  • Mini Robot
  • *
  • Mensagens: 4
Re: Ajuda
« Responder #11 em: 16 de Novembro de 2016, 09:47 »

Aqui vao as respostas Senso

Realmente esse begin e esse end :/

O que é que não funciona?
O Hardware está todo a funcionar, claro simulando os sinais que o micro deveria gerar. Este codigo foi enviado por uns colegas de uma universidade americana para um projecto que tinhamos em conjunto, sendo que o codigo era totalmente deles, a mim so me interessou projectar o hardware para o que eles me indicaram necessitar e claro que me enviaram o fluxograma do codigo mas o codigo propriamente dito nao me interessou por nao ser eu que o estava a desenvolver, o problema começou quando esse elemento americano simplesmente saiu do projecto e enviou isto assim... Apesar de isto fazer parte de apenas 1 dos módulos do projecto (e a unica que estavamos dependentes deles), é uma parte muito importante pois é o modulo de sonar e sem ele o resto fica cego...


Estão a usar algum cristal externo?
Se sim, de quantos Mhz?
Sim, 16MHz

Há esquema que possam/queiram aqui postar?
Basicamente neste módulo recorresse a um ATMEGA32L que á parte das ligações obvias temos o PB0 com a ligação ao circuito emissor que tem um amplificador pelo caminho e o tx do transceiver. Na porta PB1 temos a recepção com recurso previo a um amplificador e um Schmitt trigger, depois da PA0 á PA7 temos saidas que são accionadas consoante os niveis da recepção. Depois estes sinais vão accionar outros modulos. Na porta PD0 a PD7 temos a ligação do LCD e PC6 e PC7 tambem ao LCD.
 
Ajudava um bocadinho.
O begin e o end a substituir {} não faz qualquer sentido e só causa mais confusão a ler o código.
Não precisam de #asm sei quando podem simplesmente usar sei();

O código tanto do pisca leds e do som podem ser BASTANTE simplificados, dado que um é á primeira vista uma comparação com meia duzia de valores, bastava ler meia duzia de valores de um array e não precisam de ligar e desligar o timer um monte de vezes é só mudar o valor do OCR para 0 ou 255 conforme o que lá têm pendurado para não fazer mais barulho, mas deve ser um buzzer.
Sim é um Buzzer

O pisca pisca dos leds é right shift( >> )

Que biblioteca de lcd estão a usar?
Esse é outro problema que eles sairam na altura da implementação do LCD, este LCD vai ser apenas para leituras tecnicas e não vai existir no produto final, mas é importante para vermos as leituras durante a calibragem do circuito no seu total. O LCD que vamos colocar é um LCD alfanumerico 16x2 com chipset HD44780.

Usar um equ __ para definir algo que o mais certo é ser definido no .h da biblioteca para o lcd é no minimo meio estranho :/

Está a usar um sonar com saida pwm e a usar input capture para contar pulsos e a partir dai ter um valor de distância?
SIM

Incrementam o valor de c três vezes e depois nunca mais fazer nada á variável nem a voltam a meter a 1 para o primeiro if voltar a dar true, que provavelmente deve ser um dos vossos muitos problemas com o código.
Tambem acho

Código ligeiramente formatado e com o minimo de comentários..
Código: [Seleccione]
#include <Mega32.h>
#include <delay.h>
#include <stdio.h>
#include <avr/interrupt.h>

#define terminator 15         
#define LCDwidth 16

char lcd_buffer[17];

int pulse_counter;     
int light_timer;     
int pong_timer;         
int count;           
int v1, v2, v3, v4, v5, v6, v7;   
int avg;           
int total_count;     
int dist;           
char c;               
int timer;           

#asm
.equ __lcd_port=0x15
#}asm

#include <lcd.h>

void light_flashing(void);

interrupt [TIM2_COMP] t2_compare(void){

if((count==0) || (count==4) || (count==8) || (count==12) || (count==16)){ // || (count==20))
PORTB = 0xff;
}

if((count==2) || (count==6) || (count==10) || (count==14) || (count==18)){ // || (count==22))
PORTB = 0xfe;

if (count==2){
pong_timer = 0;
}
TCNT1 = 0;
}

count++;

if(count==700){
count = 0;
pulse_counter++;
}
pong_timer++;

}

void light_flashing(void){

light_timer++;
if ((avg>0) && (avg <= 15)){
PORTA = 0x3f;
}

else if ((avg > 15) && (avg <= 20)){
PORTA = 0x1f;
}

else if ((avg > 20) && (avg <= 25)){
PORTA = 0x0f;
}

else if ((avg > 25) && (avg <= 30)){
PORTA = 0x07;
}

else if ((avg > 30) && (avg <= 35)){
PORTA = 0x03;
}

else if (avg > 35){
PORTA = 0x01;

}
}

void sound_gen(void){

if(timer==0){
TCCR0=0;
}

if((avg>0) && (avg <= 15)){
if(timer==3){
TCCR0 = 0x1c; //0001 1100
//_BV(COM00)|_BV(WGM01)|_BV(CS02)
//CTC mode
//Toggle OC0 on compare match
//CLK/256 prescaller
//
}
timer++;
if(timer>=6){
timer = 0; //timer off
}
}

if((avg>15) && (avg <= 20)){
if(timer==5){
TCCR0 = 0x1c;
}
timer++;
if(timer>=10){
timer = 0;
}
}
if((avg>20) && (avg <= 25)){
if(timer==6){
TCCR0 = 0x1c;
}
timer++;
if(timer>=12){
timer = 0;
}
}

if((avg>25) && (avg <= 30)){

if(timer==7){
TCCR0 = 0x1c;
}
timer++;
if(timer>=14){
timer = 0;
}
}

if((avg>30) && (avg <= 35)){
if(timer==8){
TCCR0 = 0x1c;
}
timer++;
if(timer>=16){
timer = 0;
}
}
if(avg>35){
if(timer==9){
TCCR0 = 0x1c;
}
timer++;
if(timer>=18){
timer = 0;
}
}
}


void main(void){

TCCR2=0x09;     //0000 1001 _BV(WGM21)|_BV(CS20)
//Timer 2 in CTC MODE with OCR2 as TOP
//No prescalling of CLK
//
OCR2 = 49; //6us period(at 8Mhz) ???

TCCR0 = 0; //Free runing timer
OCR0 = 7;

TIMSK = 0x80; //_BV(OCIE2)  Timer/Counter2 Output Compare Match Interrupt Enable

DDRB = 0x01;
PORTB = 0x00;

DDRA = 0xff;
PORTA = 0;

pulse_counter = 0;

light_timer = 0;

pong_timer = 0;

count = 0;

c=1;

v1=0;
v2=0;
v3=0;
v4=0;
v5=0;
v6=0;
v7=0;

total_count = 0;

timer = 0;


lcd_init(LCDwidth);
lcd_clear();
PushState = NoPush;

lcd_clear();

lcd_gotoxy(0,1);
sprintf(lcd_buffer,"%-i",value);
lcd_puts(lcd_buffer);

lcd_gotoxy(0,0);
lcd_putsf("BIKE ALERT ULTRASONIC 2016");

lcd_init(LCDwidth);         
lcd_clear();

sei();


while(1){

if ((count>=40) && (PINB.1)){

v1=pong_timer;
v1 = ((int)(((double)v1)*.2125)/2.0);

pulse_counter = 0;

avg = (v1+v2+v3+v4+v5+v6+v7)/7;
v2 = v1;
v3 = v2;
v4 = v3;
v5 = v4;
v6 = v5;
v7 = v6;
total_count++;

sound_gen();

if ((c==1) && (total_count==7)){
lcd_clear();
lcd_gotoxy(0,0);
sprintf(lcd_buffer,"%-i",dist);
lcd_puts(lcd_buffer);
lcd_gotoxy(0,1);
sprintf(lcd_buffer,"%-i",v1);
lcd_puts(lcd_buffer);

lcd_gotoxy(0,0);
lcd_putsf("Distancia = ");
lcd_gotoxy(12,0);
sprintf(lcd_buffer,"%-i",avg);
lcd_puts(lcd_buffer);
c++;
total_count = 0;
}

if ((c==2) && (total_count==7)){
lcd_gotoxy(8,0);
sprintf(lcd_buffer,"%-i",avg);
lcd_puts(lcd_buffer);
c++;
total_count = 0;
}

if ((c==3) && (total_count==7)){
lcd_gotoxy(14,0);
sprintf(lcd_buffer,"%-i",avg);
lcd_puts(lcd_buffer);
c++;
total_count = 0;
}

light_flashing();
}

//{ useless brakets
//
PORTA = 0x00;
TCCR0 = 0;
//}

}
}

Comecem a debitar respostas sff.
Isto é trabalho de quê?
É um projecto que nos foi pedido para participar em multitarefas ou seja existem varios grupos por projecto e cada grupo desenvolve uma área da implementação desde o firmware, hardware, marketing, estudo de mercado e comercialização. É uma ideia inovadora para aproximar grupos universitarios de diferentes paises.
Nós escolhemos este projecto de robótica na vertente do hardware.

PAP?
Universidade?(medo :/ )
POIS
Secundário?

Não, não vos vou bater, mas quero ter noção de que nivel de educação têm e de como vos posso responder para que entendam a coisa.
« Última modificação: 16 de Novembro de 2016, 09:54 por g3net »

Offline Hugu

  • Mini Robot
  • *
  • Mensagens: 5.602
  • Keyboard not found. Press any key to continue.
    • [url=www.g7electronica.net]G7 Electrónica.net[/url]
Re: Ajuda
« Responder #12 em: 16 de Novembro de 2016, 16:56 »
A mim parece-me que é um trabalho mais inglório para quem vos queira ajudar, quando vcs pedem ajuda com um codigo feito e que nao funciona* sem descrição e nao sabendo o objectivo, estar a corrigir codigo dos outros é mais complicado do que começar a fazer um codigo de raiz.

Se de facto esta parte do projecto calhou a outro grupo/universidade, e se o outro grupo funciona só com um elemento do grupo e que "saiu", pra mim era responsabilizar esse grupo a ter de tratar/resolver esse imbróglio. Se calhar vcs estao mais motivados/empenhados no sucesso do trabalho final, mas serem vcs a resolver o problema dos outros e depois os outros a ficarem com a fama do projecto é inaceitável. O que dizem os vossos orientadores/docentes? Vcs teriam de pagar do vosso bolso? (são apenas retóricas)


p.s.: reedita os posts com '['code']' '['/code']' para o código que postaste e '['quote']' '['/quote']' para as citações, senao nao se destingue o que é citado com o que sao as tuas/vossas respostas..ja que o forum tem falta de moderadores :P
(retirando as aspas no bbcodes)
« Última modificação: 16 de Novembro de 2016, 17:07 por Hugu »