#1 Програмування Arduino » вопрос по синтаксису » 2017-01-28 12:57:51

freeman86
відповідей: 2
01
#define PUMP 5
02
#define LED 13
03
#define HUMIDITY 10
04
#define WATER_SENS A0
05
 
06
#define WATERING_MILSEK 3000
07
 
08
#define STATE_STANDBY 0
09
#define STATE_WATERING 1
10
#define STATE_NOWATER 2
11
 
12
void Blink();
13
void watering();
14
void humid();
15
boolean checkWater();
16
int state = STATE_STANDBY;
17
 
18
void setup() {
19
  pinMode(PUMP, OUTPUT);
20
  pinMode(LED, OUTPUT);
21
  pinMode(HUMIDITY, INPUT);
22
  pinMode(WATER_SENS, INPUT);
23
}
24
void loop() {
25
   switch (state){
26
    case STATE_STANDBY:
27
    checkWater == true;
28
    if(humid, false)
29
    state = STATE_WATERING;
30
    if(checkWater, false)
31
    state = STATE_NOWATER;
32
    break;
33
     
34
    case STATE_WATERING:
35
    watering();
36
    state = STATE_STANDBY;
37
    break;
38
 
39
    case STATE_NOWATER:
40
    Blink();
41
    state = STATE_STANDBY;
42
    break; 
43
    }
44
}
45
 
46
 
47
   boolean checkWater(){
48
     if(analogRead(WATER_SENS) >= 30)
49
     return true;
50
     else
51
     return false;
52
   }
53
 
54
   void humid(){
55
    if(digitalRead(HUMIDITY)== LOW)
56
  return true;
57
  else
58
  return false;
59
   }
60
 
61
   void watering(){
62
  digitalWrite(PUMP, HIGH);
63
  delay(WATERING_MILSEK);
64
  digitalWrite(PUMP, LOW);
65
   }
66
 
67
   void Blink(){
68
  if(checkWater() == false){
69
    digitalWrite(LED, HIGH);
70
    delay(500);
71
    digitalWrite(LED, LOW);
72
    delay(500);
73
  }
74
  else {
75
    digitalWrite(LED, LOW);
76
  }
77
 }

Код компилируется на Arduino IDE. На железе в действии еще не пробовал.

Вопрос: почему  void humid(), но boolean checkWater()? Разве эти функции не одно и то же? hmm
На попытку сделать void checkWater() (в глобальной переменной тоже меняю), выводится следующая ошибка:


In file included from C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino/Arduino.h:24:0,

                 from sketch\pump1_1.ino.cpp:1:

C:\Users\Администратор\Documents\Arduino\pump\pump1_1\pump1_1.ino: In function 'void Blink()':

pump1_1:68: error: invalid operands of types 'void' and 'bool' to binary 'operator=='

exit status 1
invalid operands of types 'void' and 'bool' to binary 'operator=='

#2 Програмування Arduino » USBASP не прошивает Uno » 2016-11-24 18:51:17

freeman86
відповідей: 0

Месяц назад при заливании скетча в Uno что-то пошло не так и она вообще перестала прощиваться скетчами.

Второй Uno перепрощиь не удалось. Заказал USBAPS.

Вот спустя месяц он пришел, но и теперь Uno не восстанавливается.

Драйвера для USBAPS установлены. В программе устанавливаю: Программатор USBAPS, плата Uno, Записать загрузчик. (питание Uno только от USBAPS). Только начинает записывать и пишет ошибку(специально привожу тут подробный развернутый вариант):

Arduino: 1.6.13 (Windows 10), Плата:"Arduino/Genuino Uno"

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cusbasp -Pusb -e -Ulock:w:0x3F:m -Uefuse:w:0x05:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m

avrdude: Version 6.3, compiled on Sep 12 2016 at 17:24:16
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : usb
         Using Programmer              : usbasp
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : usbasp
         Description     : USBasp, http://www.fischl.de/usbasp/

avrdude: auto set sck period (because given equals null)
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: erasing chip
avrdude: auto set sck period (because given equals null)
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: reading input file "0x3F"
avrdude: writing lock (1 bytes):

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -cusbasp -Pusb -Uflash:w:C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/optiboot/optiboot_atmega328.hex:i -Ulock:w:0x0F:m

avrdude: Version 6.3, compiled on Sep 12 2016 at 17:24:16
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : usb
         Using Programmer              : usbasp
Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of lock written
avrdude: verifying lock memory against 0x3F:
avrdude: load data lock data from input file 0x3F:
avrdude: input file 0x3F contains 1 bytes
avrdude: reading on-chip lock data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of lock verified
avrdude: reading input file "0x05"
avrdude: writing efuse (1 bytes):

Writing |  ***failed; 
################################################## | 100% 0.03s

avrdude: 1 bytes of efuse written
avrdude: verifying efuse memory against 0x05:
avrdude: load data efuse data from input file 0x05:
avrdude: input file 0x05 contains 1 bytes
avrdude: reading on-chip efuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: WARNING: invalid value for unused bits in fuse "efuse", should be set to 1 according to datasheet
This behaviour is deprecated and will result in an error in future version
You probably want to use 0xfd instead of 0x05 (double check with your datasheet first).
avrdude: 1 bytes of efuse verified
avrdude: reading input file "0xDE"
avrdude: writing hfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of hfuse written
avrdude: verifying hfuse memory against 0xDE:
avrdude: load data hfuse data from input file 0xDE:
avrdude: input file 0xDE contains 1 bytes
avrdude: reading on-chip hfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of hfuse verified
avrdude: reading input file "0xFF"
avrdude: writing lfuse (1 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 1 bytes of lfuse written
avrdude: verifying lfuse memory against 0xFF:
avrdude: load data lfuse data from input file 0xFF:
avrdude: input file 0xFF contains 1 bytes
avrdude: reading on-chip lfuse data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: 1 bytes of lfuse verified

avrdude done.  Thank you.

         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : usbasp
         Description     : USBasp, http://www.fischl.de/usbasp/

avrdude: auto set sck period (because given equals null)
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: auto set sck period (because given equals null)
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: reading input file "C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/optiboot/optiboot_atmega328.hex"
avrdude: writing flash (32768 bytes):

Writing | ################################################## | 100% 0.00s

avrdude: 32768 bytes of flash written
avrdude: verifying flash memory against C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/optiboot/optiboot_atmega328.hex:
avrdude: load data flash data from input file C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/optiboot/optiboot_atmega328.hex:
avrdude: input file C:\Program Files (x86)\Arduino\hardware\arduino\avr/bootloaders/optiboot/optiboot_atmega328.hex contains 32768 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.00s

avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x7e80
         0xff != 0x11
avrdude: verification error; content mismatch

avrdude done.  Thank you.

Ошибка при записи загрузчика.
Вопрос, что не так?

#3 Re: Різне » Не заливается скетч на Uno R3 (китаец) » 2016-10-07 19:36:44

Да, я же до этого успел залить пару-тройку скетчей и они работали как надо

#4 Різне » Не заливается скетч на Uno R3 (китаец) » 2016-10-07 19:13:43

freeman86
відповідей: 10

Arduino Uno R3. При попытке залить очередной простой скетч, "что-то пошло не так", после чего вообще ничего не заливается. Пробовал на двух компах (Win XP, Win 10). Все то же самое. При попытке заливать скетч, поочередно один раз мигают TX, RX, затем все останавливается. Горит непрерывно ON и L. Ошибка типа: "ardude: verification error, content mismatch". Забыл добавить деталь! Когда подключаешь плату по USB, компьютер никак не реагирует, видимо не определяет ее как устройтсво..

Я только пару дней как получил плату, так что ничего не знаю...подскажие пожалуйста, как вернуть плату в "исходное" состояние? sad

Підвал форуму