Ви не увійшли.
Сторінки 1
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()? Разве эти функции не одно и то же?
На попытку сделать 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=='
Месяц назад при заливании скетча в 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.
Ошибка при записи загрузчика.
Вопрос, что не так?
Да, я же до этого успел залить пару-тройку скетчей и они работали как надо
Arduino Uno R3. При попытке залить очередной простой скетч, "что-то пошло не так", после чего вообще ничего не заливается. Пробовал на двух компах (Win XP, Win 10). Все то же самое. При попытке заливать скетч, поочередно один раз мигают TX, RX, затем все останавливается. Горит непрерывно ON и L. Ошибка типа: "ardude: verification error, content mismatch". Забыл добавить деталь! Когда подключаешь плату по USB, компьютер никак не реагирует, видимо не определяет ее как устройтсво..
Я только пару дней как получил плату, так что ничего не знаю...подскажие пожалуйста, как вернуть плату в "исходное" состояние?
Сторінки 1