Skocz do zawartości

Problem z programem do sharpa 20cm-150cm


mario246

Pomocna odpowiedź

Witam, rozpocząłem testy czujnika sharp lecz napotkałem na błachy pewnie problem jednak nie potrafię go rozwiązać samodzielnie. A mianowicie storzoną ma tablicę odległości jednak przy próbie jej wykorzystania w pomiaradc0() w funkcji sprintf( zmierzona wartość powinna być podstawiona do tablicy i wybrana zostać powinna odległość) a następnie zamienionna powinna zostać na łańcuch znakowy ale tak nie działa gdyż komplikator mówi że to nie jest funkcja(is not called a function)

/*
* Projekt_Niobe.c
*
* Utworzony: 06/08/2013 23:04:45
*  Autor: Dawid Marczak
*/ 


#include "podprogramy.h"
#include <stdio.h>
#include <avr/io.h>
#include "timer.h"
#include <math.h>
#include <util/delay.h>
#include "hd44780.h"
//#include "ds18b20.h"
#include <avr/interrupt.h>
#include <util\atomic.h>
#include <string.h>
#define czas _delay_ms(100);


////////////////////////////////////////////////////////////////////definicje/////////////////////////////////////
void adc_init(void);
volatile float adc; //zmienna do obliczen adc
#define VREF 2,56 // napiecie referencyjne
#define ADMUXVAL (1<<REFS0) | (1<<REFS1) //nap wewnetrzne chyba okolo 2,56v


////////////////////////////////////// ZMIENNE GLOBALNE ///////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////tablice
char str1[]="DYSTANS";

char czujnik_sharp[] = {165,164,163,162,161,160,159,158,157,156,155,154,153,152,151,150,149,148,147,146,145,144,143,142,141,140,139,138,
137,136,135,134,133,132,131,130,129,128,127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112,111,110,109,108,107,106,105,
104,103,102,101,100,99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64,63,
62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,
18,17,16,15,13,12,11,10,9,8,7,6,5,4,3,2,1};
int dystans=0;


///////////////////////////////////////////   PODPROGRAMY   ////////////////////////////////////////////////////////
void adc_init()
{
ADCSRA = (1<<ADEN); // adc_on
DDRA &=~(1<<PA0); 
DDRA &=~(1<<PA1);

}
void pomiaradc0()
{
char wynik[]="     ";// bufor do adc
ADMUX = ADMUXVAL | 0; //wybor adc 0
ADCSRA |=(1<<ADSC); //konwersja pojedyncza
while(ADCSRA & (1<<ADSC)); //czeka na koniec konwersji
adc = ADC*VREF/1024; // przeliczanie
adc = adc / 10;
adc = adc - 15;//dzielimy przez 10 a potem odejmyjemy 15 zeby byc blisko zakreu 0-150

sprintf(wynik,"U=%0.0f",czujnik_sharp(adc);//konwersja na lancuch znakowy problem called object is not a function
LCD_LOCATE(0,1);
lcd_puts(wynik);
_delay_ms(400);

}






/*********************************************************************************************************************/
/*********************************************************************************************************************/
/*********************************************************************************************************************/





int main(void)
{


adc_init();
lcd_init(); //inicjalizacja lcd
LCD_DISPLAY(LCDDISPLAY);	
lcd_puts(str1);



   while(1)
{  
	pomiaradc0();





   }	
}


Link do komentarza
Share on other sites

dzięki, program udał się skompilować lecz mimo to teraz pokazuję ciągle zero nawet jeśli podstawię konkretną wartość np 30

sprintf(wynik,"U=%0.0f",czujnik_sharp[(int)30])
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.