call of overloaded 'String(float&, int)' is ambiguous
- Войдите на сайт для отправки комментариев
Сб, 06/07/2019 - 18:59
Здравствуйте,уважаемые гении программирования.Буду краток. Помогииите!!!! при компиляции такая ошибка call of overloaded 'String(float&, int)' is ambiguous
[code]
/* Генератор, частотометр, вольтметр на Ардуино Уно v 2.4
* Распиновка: Энкодер A0,A1 (in)
* Кнопка энкодера A2 (in)
* Кнопка "режим" A3 (in)
* Подсветка 8 (out) (вывод BL дисплея)
* Дисплей nokia 5110 - 13,12,11,10 (out)
* Выход генератора 0..7 + 9 (out)
* Вход частотометра - 5 (in)
* Входы вольтметра -А4,А5 (in)
*/
const PROGMEM uint8_t sinewave[]= // массив синуса
{
0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf5,
0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,
0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0,0xde,0xdc,
0xda,0xd8,0xd5,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb3,
0xb0,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x98,0x95,0x92,0x8f,0x8c,0x89,0x86,0x83,
0x80,0x7c,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x63,0x60,0x5d,0x5a,0x57,0x54,0x51,
0x4f,0x4c,0x49,0x46,0x43,0x40,0x3e,0x3b,0x38,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,
0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13,0x12,0x10,0x0f,0x0d,0x0c,0x0a,
0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,
0x09,0x0a,0x0c,0x0d,0x0f,0x10,0x12,0x13,0x15,0x17,0x19,0x1b,0x1d,0x1f,0x21,0x23,
0x25,0x27,0x2a,0x2c,0x2e,0x31,0x33,0x36,0x38,0x3b,0x3e,0x40,0x43,0x46,0x49,0x4c,
0x4f,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x67,0x6a,0x6d,0x70,0x73,0x76,0x79,0x7c
};
const PROGMEM uint8_t squarewave[]= //массив меандра
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
};
const PROGMEM uint8_t trianglewave[]= //массив треугольника
{
0x00,0x02,0x04,0x06,0x08,0x0a,0x0c,0x0e,0x10,0x12,0x14,0x16,0x18,0x1a,0x1c,0x1e,
0x20,0x22,0x24,0x26,0x28,0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e,
0x40,0x42,0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x52,0x54,0x56,0x58,0x5a,0x5c,0x5e,
0x60,0x62,0x64,0x66,0x68,0x6a,0x6c,0x6e,0x70,0x72,0x74,0x76,0x78,0x7a,0x7c,0x7e,
0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e,0x90,0x92,0x94,0x96,0x98,0x9a,0x9c,0x9e,
0xa0,0xa2,0xa4,0xa6,0xa8,0xaa,0xac,0xae,0xb0,0xb2,0xb4,0xb6,0xb8,0xba,0xbc,0xbe,
0xc0,0xc2,0xc4,0xc6,0xc8,0xca,0xcc,0xce,0xd0,0xd2,0xd4,0xd6,0xd8,0xda,0xdc,0xde,
0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xee,0xf0,0xf2,0xf4,0xf6,0xf8,0xfa,0xfc,0xfe,
0xff,0xfd,0xfb,0xf9,0xf7,0xf5,0xf3,0xf1,0xef,0xef,0xeb,0xe9,0xe7,0xe5,0xe3,0xe1,
0xdf,0xdd,0xdb,0xd9,0xd7,0xd5,0xd3,0xd1,0xcf,0xcf,0xcb,0xc9,0xc7,0xc5,0xc3,0xc1,
0xbf,0xbd,0xbb,0xb9,0xb7,0xb5,0xb3,0xb1,0xaf,0xaf,0xab,0xa9,0xa7,0xa5,0xa3,0xa1,
0x9f,0x9d,0x9b,0x99,0x97,0x95,0x93,0x91,0x8f,0x8f,0x8b,0x89,0x87,0x85,0x83,0x81,
0x7f,0x7d,0x7b,0x79,0x77,0x75,0x73,0x71,0x6f,0x6f,0x6b,0x69,0x67,0x65,0x63,0x61,
0x5f,0x5d,0x5b,0x59,0x57,0x55,0x53,0x51,0x4f,0x4f,0x4b,0x49,0x47,0x45,0x43,0x41,
0x3f,0x3d,0x3b,0x39,0x37,0x35,0x33,0x31,0x2f,0x2f,0x2b,0x29,0x27,0x25,0x23,0x21,
0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13,0x11,0x0f,0x0f,0x0b,0x09,0x07,0x05,0x03,0x01
};
const PROGMEM uint8_t sawtoothwave[]= //массив пила1
{
0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a,0x2b,0x2c,0x2d,0x2e,0x2f,
0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,
0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f,
0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f,
0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,
0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7a,0x7b,0x7c,0x7d,0x7e,0x7f,
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,
0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,
0xb0,0xb1,0xb2,0xb3,0xb4,0xb5,0xb6,0xb7,0xb8,0xb9,0xba,0xbb,0xbc,0xbd,0xbe,0xbf,
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,
0xd0,0xd1,0xd2,0xd3,0xd4,0xd5,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdd,0xde,0xdf,
0xe0,0xe1,0xe2,0xe3,0xe4,0xe5,0xe6,0xe7,0xe8,0xe9,0xea,0xeb,0xec,0xed,0xee,0xef,
0xf0,0xf1,0xf2,0xf3,0xf4,0xf5,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfe,0xff
};
const PROGMEM uint8_t rewsawtoothwave[]= //массив пила2
{
0xff,0xfe,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0,
0xef,0xee,0xed,0xec,0xeb,0xea,0xe9,0xe8,0xe7,0xe6,0xe5,0xe4,0xe3,0xe2,0xe1,0xe0,
0xdf,0xde,0xdd,0xdc,0xdb,0xda,0xd9,0xd8,0xd7,0xd6,0xd5,0xd4,0xd3,0xd2,0xd1,0xd0,
0xcf,0xce,0xcd,0xcc,0xcb,0xca,0xc9,0xc8,0xc7,0xc6,0xc5,0xc4,0xc3,0xc2,0xc1,0xc0,
0xbf,0xbe,0xbd,0xbc,0xbb,0xba,0xb9,0xb8,0xb7,0xb6,0xb5,0xb4,0xb3,0xb2,0xb1,0xb0,
0xaf,0xae,0xad,0xac,0xab,0xaa,0xa9,0xa8,0xa7,0xa6,0xa5,0xa4,0xa3,0xa2,0xa1,0xa0,
0x9f,0x9e,0x9d,0x9c,0x9b,0x9a,0x99,0x98,0x97,0x96,0x95,0x94,0x93,0x92,0x91,0x90,
0x8f,0x8e,0x8d,0x8c,0x8b,0x8a,0x89,0x88,0x87,0x86,0x85,0x84,0x83,0x82,0x81,0x80,
0x7f,0x7e,0x7d,0x7c,0x7b,0x7a,0x79,0x78,0x77,0x76,0x75,0x74,0x73,0x72,0x71,0x70,
0x6f,0x6e,0x6d,0x6c,0x6b,0x6a,0x69,0x68,0x67,0x66,0x65,0x64,0x63,0x62,0x61,0x60,
0x5f,0x5e,0x5d,0x5c,0x5b,0x5a,0x59,0x58,0x57,0x56,0x55,0x54,0x53,0x52,0x51,0x50,
0x4f,0x4e,0x4d,0x4c,0x4b,0x4a,0x49,0x48,0x47,0x46,0x45,0x44,0x43,0x42,0x41,0x40,
0x3f,0x3e,0x3d,0x3c,0x3b,0x3a,0x39,0x38,0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x30,
0x2f,0x2e,0x2d,0x2c,0x2b,0x2a,0x29,0x28,0x27,0x26,0x25,0x24,0x23,0x22,0x21,0x20,
0x1f,0x1e,0x1d,0x1c,0x1b,0x1a,0x19,0x18,0x17,0x16,0x15,0x14,0x13,0x12,0x11,0x10,
0x0f,0x0e,0x0d,0x0c,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00,
};
const PROGMEM char musor_mass[]= //массив для подгонки адреса в флэш-памяти
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
volatile int32_t freq=1000;
volatile uint32_t icr=0;
volatile uint16_t shag=100;
volatile uint16_t int_tic=0;
volatile uint8_t regim=5;
volatile uint8_t monitor_flag;
volatile uint8_t ad2,ad1,ad0;
volatile uint8_t duty=50;
volatile uint8_t main_flag=0;
#define int_on() PCMSK1=(1<<PCINT9)|(1<<PCINT10)|(1<<PCINT11); PCICR=(1<<PCIE1);
//включить прерывание PCINT1, выбор пинов прерывания A1,A2,A3
#define int_off() PCMSK1=0; PCICR=0; //отключить PCINT1
#include <LCD5110_SSVS.h>
extern uint8_t SmallFont[];
extern uint8_t RusFont[];
extern uint8_t MediumNumbers[];
LCD5110 lcd(10,11,12,13);
// DDS algorithm
static inline void signalOUT(const uint8_t *signal){
asm volatile( "eor r18, r18 ;r18<-0" "\n\t"
"eor r19, r19 ;r19<-0" "\n\t"
"1:" "\n\t"
"add r18, %0 ;1 cycle" "\n\t"
"adc r19, %1 ;1 cycle" "\n\t"
"adc %A3, %2 ;1 cycle" "\n\t"
"lpm ;3 cycles" "\n\t"
"out %4, __tmp_reg__ ;1 cycle" "\n\t"
"sbis %5, 7 ;1 cycle if no skip" "\n\t"
"rjmp 1b ;2 cycles. Total 10 cycles" "\n\t"
:
:"r" (ad0),"r" (ad1),"r" (ad2),"e" (signal),"I" (_SFR_IO_ADDR(PORTD)), "I" (_SFR_IO_ADDR(PORTB))
:"r18", "r19" );
}
void setup(){
lcd.InitLCD();
for (int n=0; n <sizeof(musor_mass); n++ ) {PORTD=musor_mass[n]; }
PORTD=0; DDRD=0; TCCR1A=0; TCCR1B=0; TIMSK1=0;
PORTC|=(1<<PC2)|(1<<PC3); //подтяжка кнопок на A2 A3
DDRB|=1<<PB0; // 8 пин -включение подсветки дисплея = выход
main_screen(); //стартовое сообщение и выбор задач
//далее загрузка генератора по умолчанию
TCCR0B=0; check_regim();
int_on();//включить прерывание PCINT1
main_flag=1;
} //end setup
void up_down(boolean x){ // управление регулировками
// static boolean n=0; if (n=!n){return;} // снять ремарку для энкодеров с двойным щелчком
if (TCCR1B==17 && ICR1<2800 && regim==5){
if(x) {if (icr<1000 && shag > 100) shag=100;
if (icr<100 && shag > 10) shag=10;
if (icr<10 && shag > 1) shag=1;
icr-=shag;
if (icr<2) icr=2; }
else { if (icr > 1800 && shag >100) shag =100; icr+=shag ; }
return; }
if (regim==6){if (ICR1>100){
if (x){if(duty<100) {duty++; } }
if (!x){ if(duty>0) {duty--; }} }
else{
if (x){if(OCR1A<ICR1) {OCR1A++; } }
else {if(OCR1A>0) {OCR1A--; } }
if(OCR1A>ICR1) OCR1A=ICR1-1;
duty=(uint32_t)100*OCR1A/ICR1; }
return;
}
x? freq+=shag : freq-=shag ;
if (freq < 1) freq=1;
}
////////////////////////////////////////////////////////////////
//****** ПРЕРЫВАНИЕ от кнопок и энкодера*******/////////////////
ISR (PCINT1_vect){
int_off(); PORTD=0;
///блок для обработки событий не в режиме генератора///
if (main_flag==0) { if ((PINC&(1<<3))==0){ while ((PINC&(1<<3))==0); //вкл. подсветки
if ((PINC&(1<<2))==0){ PINB|=1<<PB0; while ((PINC&(1<<2))==0);}
int_on(); return; //выходить если не в режиме генератора
}}
//далее всё в режиме генаратора
// если нажата кнопка энкодера
if ((PINC&(1<<3))==0){
while ((PINC&(1<<3))==0);// подождать до тех пор, когда кнопку отпустят
//блок вкл/отк подсветки дисплея (8 пин ардуино)
if ((PINC&(1<<2))==0){ //если после этого нажата кнопка режимов,
PINB|=1<<PB0; //менять состояние 8 пина
while ((PINC&(1<<2))==0);// теперь подождать пока отпустят кнопку режим
int_on(); return;
}
if (regim==6) { regim=5; check_regim(); int_on(); return; }
switch (shag){
case 1: shag=10; break;
case 10: shag=100; break;
case 100: shag=1000; break;
case 1000: shag=1; break;
} check_regim(); int_on(); return;
} //конец блока *если нажата кнопка энкодера*
if ((PINC&(1<<2))==0){ // если нажата кнопка режимов
PORTD=0;
while ((PINC&(1<<2))==0);
regim++; if (regim==7) regim=0;
check_regim(); int_on(); return;
} //конец блока *если нажата кнопка режимов*
// если кнопки не нажимались -значит крутили энкодер:
up_down( ! (PINC&1)^((PINC&2)>>1) ); //отправить считанное энкодеров в другую функцию
// если при вращении счёт идёт не в нужную сторону, то (вставить/убрать) символ '!' up_down(!
check_regim(); int_on();
} //конец функции обработки прерываний от кнопок PCINT1_vect
////////////////////КОНЕЦ_ПРЕРЫВАНИЕ_от_кнопок_и_энкодера///////////////////////////////
void pwm_gen(){ //настройка таймера1
uint16_t divider=1;
icr = (16000000ul / freq /2 /divider);
byte shifts[] = {3,3,2,2};
for(byte i = 0; i < 4; i++){
if (icr > 65536) {
divider <<= shifts[i];
icr = 16000000ul / freq /2 /divider; }
else { TCCR1B = (i+1)|(1<<WGM13); break; } }
ICR1=icr-1;
set_duty();
} //end pwm_gen
void loop() {
if (monitor_flag) { monitor_flag=0; monitor_out(); }
if (regim <5){ PORTB&= ~(1<<7);
DDRD=0xFF;//set D port as output
uint32_t temp=(float)freq /0.095367431640625;
ad2=temp>>16; ad1=temp>>8; ad0=temp;
switch (regim){
case 0: signalOUT(sinewave); break;
case 1: signalOUT(trianglewave); break;
case 2: signalOUT(squarewave); break;
case 3: signalOUT(sawtoothwave); break;
case 4: signalOUT(rewsawtoothwave);
} //end switch
DDRD=0; PORTD=0;
} //end if (regim<5)
}//end loop
void monitor_out(){
String IBHBYF,IFU;//String dutystr,stepstr;
IBHBYF= String("Ibhbyf="+ String(duty)+ "%"); //dutystr= String("Duty="+ String(duty)+ "%");
IFU=String("Ifu= "+String(shag));//stepstr=String("Step= "+String(shag));
lcd.clrScr();
//Вывод первой строчки
lcd.setFont(RusFont);
if (freq <10000) {lcd.print("Xfcnjnf Uw",LEFT,0 ); }//("Frequency, Hz",LEFT,0 ); }
if (freq >=10000) {lcd.print("Xfcnjnf rUw",LEFT,0 ); }//("Frequency, kHz",LEFT,0 ); }
//Вывод второй строчки
lcd.setFont(MediumNumbers);
if (freq <10000) { lcd.printNumI(freq, CENTER, 8); }
if (freq >=10000u && freq < 1000000ul ) { lcd.printNumF( ((float)freq/1000),3 ,CENTER, 8); }
if (freq >=1000000ul ) { lcd.printNumF( ((float)freq/1000),2 ,CENTER, 8); }
//Вывод третьей строчки
lcd.setFont(RusFont);
switch(regim){
case 0: lcd.print("Cbyec",CENTER, 32); break;
case 1: lcd.print("Nhteu",CENTER, 32); break;
case 2: lcd.print("Vtfylh",CENTER, 32); break;
case 3: lcd.print("Gbkf 1",CENTER, 32); break;
case 4: lcd.print("Gbkf 2",CENTER, 32); break;
case 5: lcd.print("IBV",CENTER,32); break;
case 6: lcd.print("Pfgjkytybt", CENTER, 32);
}
//Вывод четвёртой строчки
if (regim==6) lcd.print(IBHBYF, CENTER, 40);
else lcd.print(IFU, CENTER, 40);
// if (regim==6) lcd.print(dutystr, CENTER, 40);
// else lcd.print(stepstr, CENTER, 40);
}//end monitor out
void set_duty(){
if (regim==6&&ICR1<100) return;
if (regim==5 && ICR1<100){
OCR1A=ICR1/2; duty=50;
return; }
static uint16_t ocr;
ocr=(uint32_t)ICR1*duty/100;
OCR1A=ocr;
}
void check_regim(){// проверка и установка режимов генератора
if (regim <5){ if (freq > 100000) freq=100000;
TCCR1B=0;
TCCR1A=0; DDRB&=~(1<<DDB1); // 9 pin arduino set Z-mode
}// end if regim <5
if (regim > 4) {
TCCR1A=1<<COM1A1; DDRB|=1<<DDB1; // 9 pin set output (pwm out)
if (TCCR1B==17 && ICR1<2800){
ICR1=icr; freq= (float) 8000000UL/ICR1;
set_duty(); }
else { pwm_gen(); }
}
PORTB|= 1<<7;
monitor_flag=1;
}
ISR (TIMER1_OVF_vect){ int_tic++; } // прерывание частотомера
void freq_meter(){
lcd.clrScr();
lcd.setFont(RusFont);
lcd.print("Xfcnjnjvth",LEFT, 0);
int_on();//включить прерывание PCINT1
TIMSK1 = 1<<TOIE1;// подключить прерывание
uint32_t freqm=0;// Переменная измерения частоты
int_tic=0; TCNT1=0; TIFR1=0;//всё обнулить
while(1){
TCCR1B=7;//тактировани от входа Т1
delay(2000); TCCR1B=0;
freqm= (((uint32_t)int_tic<<16) | TCNT1)/2; //сложить что натикало
int_tic=0; TCNT1 = 0;
lcd.clrScr(); lcd.setFont(RusFont);
lcd.print("Xfcnjnjvth",LEFT, 0);
lcd.setFont(MediumNumbers);
if (freqm <10000) { lcd.printNumI(freqm, CENTER, 8); lcd.setFont(RusFont); lcd.print("Uw",CENTER, 32 ); }
if (freqm >=10000u && freqm < 1000000ul ) { lcd.printNumF( ((float)freqm/1000),3 ,CENTER, 8);lcd.setFont(RusFont); lcd.print("rUw",CENTER, 32 ); }
if (freqm >=1000000ul ) { lcd.printNumF( ((float)freqm/1000000ul),3 ,CENTER, 8); lcd.setFont(RusFont); lcd.print("vUw",CENTER, 32 ); }
}
}
//////////////////////////////////////////////////////////////////////
void volt_meter() {
ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
ADCSRB=0; DIDR0=48; int_on();
float ain,vcc; String ainstr,vccstr;
lcd.clrScr(); lcd.setFont(SmallFont);
lcd.print("Volt meter",LEFT, 0);
while(1){
ADMUX = (1<<REFS0)|(1<<MUX3)|(1<<MUX2)|(1<<MUX1); //Vcc measure
delay(1); vcc=(float)(1.1*65472) / analog_func();
vccstr=String("Vcc= "+String(vcc,3)+" v ");
lcd.print(vccstr,LEFT, 40);
ADMUX = (1<<REFS0)|(1<<MUX2); //A4 measure
delay(1); ain= analog_func()*vcc /65472 ;
ainstr=String("Ain4= "+String(ain,3)+" v ");
lcd.print(ainstr,LEFT, 16);
ADMUX = (1<<REFS0)|(1<<MUX2)|(1<<MUX0); //A5 measure
delay(1); ain= analog_func() *vcc /65472 ;
ainstr=String("Ain5= "+String(ain,3)+" v ");
lcd.print(ainstr,LEFT, 24);
};//end while
}//end volt meter
uint32_t analog_func(){
uint32_t adc_buff=0;
for (int n=0; n<=4095; n++ ) {
ADCSRA |= (1<<ADSC);
while (bit_is_set(ADCSRA,ADSC));
adc_buff += ADC;
} return adc_buff>>=6;
}
/////////////////////////////////////////////////////////////////
void main_screen(){
static boolean flag_exit =0; uint8_t n=84;
lcd.setFont(RusFont);
lcd.print("Xfcnjnjvth ",LEFT, 8 );
lcd.print("123456789",LEFT,24);
lcd.print(" Djkmnvtnh ",LEFT, 40 );
while(flag_exit==0) { //ждать нажатия кнопки режимов.
delay(350); lcd.clrRow(3,n); n-=6;
if (n==0) flag_exit=1;
if ((PINC&(1<<3))==0){ // если нажата кнопка режимов
while ((PINC&(1<<2))==0);
freq_meter(); }
if ((PINC&(1<<2))==0){ // если нажата кнопка энкодера
while ((PINC&(1<<3))==0);
volt_meter(); }
}// end while
}// end main_screen
[/code]
381 строка ошибка
Версия IDE? Полная копипаста сообщения об ошибке?
И ещё, если хотите реальной помощи, всегда сокращайте пример до минимального, который показывает проблему. У меня, например, просто нет библиотеки и я не могу это скомпилировать, чтобы посмотреть. Сделайте пример без LCD и всего ненужного, но с такой же ошибкой.
ide 1.8.7
сообщение об ошибке Arduino: 1.8.7 (Windows 10), Плата:"WAVGAT Pro mini"
У Вас похоже, wavgat, а у него нестандартная библиотека String
Выложите пожалуйста файл C:\Program Files\Arduino\hardware\WAV\avr\cores\lgt8f/WString.h чтобы я мог на него посмотреть.
И ещё, посмотрите как Вы вставили код. Что там за глупости вначале? Из-за это поползли вес номера строк и очень трудно понимать что к чему. Старайтесь аккуратно вставлять код.
Да проклятый wavgat, /*
А вот такая ошибка при компилировании в виндовс 7 версия ардуино 1.6.8 Arduino: 1.6.8 (Windows 7), Плата:"WAVGAT Pro mini"
самое простое - это выкинуть вавгат и взять обычную ардуину. Даже у местных барыг Про мини стоит не дороже 400-500 рублей.
Поверьте, на возню с вавгатом вы потратите сильно больше
ну, я же Вам писал: "Старайтесь аккуратно вставлять код", а Вы как вставили?
В общем, так. В это библиотеке String, которую Вы вставили нет (от слова совсем) работы с float. А Вы пытаетесь это делать.
Знаете что можно попробовать. Сохраните где нибудь этот файл WString.h (и рядом лежащий WString.cpp), а вместо них скопируйте туда файлы с такими же именами из папки
C:\Program Files\Arduino\hardware\arduino\avr\cores\arduino
и попробуйте. Если повезёт, то всё заработает.
platnik, а я же делал версию генератора специально под LGT8F328, чем она не понравилась?
Я ж не знал,что такое есть,спасибо.жаль что только на фасаде уже вырезал отверстие под красивую светящуюся дополнительную кнопку. Если можно 3 вопроса
1.Операционный усилитель LM358- 1,2,3 ножки задействованы на выходе?
2.Подсветка не реализована в версии 2.5?
3. можно например подать на Areff 3.3 вольта и так подключить операционник как на схеме и всё?В коде не нужно ничего мудрить? кстати сейчас скомпилировалось без ошибок буду пробывать шить.
Больше покупать наверное не буду,хотя его очень хвалят,что Wavgat превосходит атмегу
Не повезло---выдало такую ошибку exit status 1
Так замена библиотеки, как я советовал что дала? Новые ошибки? Какие? Или заработало?
Больше покупать наверное не буду,хотя его очень хвалят,что Wavgat превосходит атмегу
Не поможете в чём проблема
На виндовс 10 отлично скомпилировалось,но там не видит порт,а на 7 порт появляется но не компилируется
попробую переустановит ардуино
Всем спасибо версия 1.8.8 и виндовс 7 только так сдался этот wavgat,когда покупал увидел что полностью совместим с атмегой вот и не знал какой гемо...ой ждет впереди
P.S. Уважаемый DIMAX не могли бы ВЫ ответить или это не в эту тему писать---- Если можно 3 вопроса
1.Операционный усилитель LM358- 1,2,3 ножки задействованы на выходе?
2.Подсветка не реализована в версии 2.5?
3. можно например подать на Areff 3.3 вольта и так подключить операционник как на схеме и всё?В коде не нужно ничего мудрить? кстати сейчас скомпилировалось без ошибок буду пробывать шить.
Это я про проект на wavgat генератор и всё такое на нокия 5110 и ардуино
platnik, (1) на схеме нет LM358. Там нарисован условный ОУ, подразумевается что каждый решает самостоятельно нужен ли он или нет, и как его включать. В общем случае lm358 очень плохой вариант, ОУ желателен с Rail-to-Rail и bandwidth не менее (100 *F_max). (2) подсветка не управляется. (3) к Aref нельзя подключать внешнее напряжение, в программе активно используются внутренние референсы, и в случае подключения внешнего МК сгорит.
А подскжите ещё версия 2.5,там на схеме нет связки из резисторов 2к и 1 к,как в предыдущих,это как понять,их не ставить,или должны быть разумеется.
и Ещё загрузил скетч версии 2.5 в wavgat через ide 1.8.8 а сейчас увидел что нужно загружать через 1.6.8, это значит что нужно перезагружать,не будет работать?
platnik, (1) в LGT8x встроенный ЦАП, поэтому внешний не нужен. (2) я не помню в какой версии IDE делал, возможно тоже в 1.6.8 так что нужно пробывать. По осцилографу будет понятно , если вместо синусов и треугольников будет что-то другое.
благодарю,Вы отзывчивый и образованный человек,я хоть сам педагог но в этих вопросах школьник,просто хобби для досуга