Помоги разобраться в скетче.На Arduino Uno. Я столкнулася с такой проблеймой exit status 1 Arduino Uno
- Войдите на сайт для отправки комментариев
Ср, 11/03/2020 - 19:33
Я столкнулася с такой проблеймой exit status 1 Arduino Uno. Все библиотеки скачала, прибор собрала верна соберала с этого сайта и взяла скетч а там такая ошибочка. Сылка на сайт https://usamodelkina.ru/11809-skaner-otpechatkov-palcev-upravlenie-jelektrozamkom.html . Помогите разобраться буду очень благодарна))) Скетч тут
#include <Adafruit_Fingerprint.h> /*************************************************** This is a library for our optical Fingerprint sensor Designed specifically to work with the Adafruit Fingerprint sensor ----> http://www.adafruit.com/products/751 These displays use TTL Serial to communicate, 2 pins are required to interface Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! Written by Limor Fried/Ladyada for Adafruit Industries. BSD license, all text above must be included in any redistribution ****************************************************/ #include "Adafruit_Fingerprint.h" #if defined(__AVR__) || defined(ESP8266) #include <SoftwareSerial.h> #endif //#define FINGERPRINT_DEBUG #if ARDUINO >= 100 #define SERIAL_WRITE(...) mySerial->write(__VA_ARGS__) #else #define SERIAL_WRITE(...) mySerial->write(__VA_ARGS__, BYTE) #endif #define SERIAL_WRITE_U16(v) SERIAL_WRITE((uint8_t)(v>>8)); SERIAL_WRITE((uint8_t)(v & 0xFF)); #define GET_CMD_PACKET(...) \ uint8_t data[] = {__VA_ARGS__}; \ Adafruit_Fingerprint_Packet packet(FINGERPRINT_COMMANDPACKET, sizeof(data), data); \ writeStructuredPacket(packet); \ if (getStructuredPacket(&packet) != FINGERPRINT_OK) return FINGERPRINT_PACKETRECIEVEERR; \ if (packet.type != FINGERPRINT_ACKPACKET) return FINGERPRINT_PACKETRECIEVEERR; #define SEND_CMD_PACKET(...) GET_CMD_PACKET(__VA_ARGS__); return packet.data[0]; /*************************************************************************** PUBLIC FUNCTIONS ***************************************************************************/ #if defined(__AVR__) || defined(ESP8266) /**************************************************************************/ /*! @brief Instantiates sensor with Software Serial @param ss Pointer to SoftwareSerial object @param password 32-bit integer password (default is 0) */ /**************************************************************************/ Adafruit_Fingerprint::Adafruit_Fingerprint(SoftwareSerial *ss, uint32_t password) { thePassword = password; theAddress = 0xFFFFFFFF; hwSerial = NULL; swSerial = ss; mySerial = swSerial; } #endif /**************************************************************************/ /*! @brief Instantiates sensor with Hardware Serial @param hs Pointer to HardwareSerial object @param password 32-bit integer password (default is 0) */ /**************************************************************************/ Adafruit_Fingerprint::Adafruit_Fingerprint(HardwareSerial *hs, uint32_t password) { thePassword = password; theAddress = 0xFFFFFFFF; #if defined(__AVR__) || defined(ESP8266) swSerial = NULL; #endif hwSerial = hs; mySerial = hwSerial; } /**************************************************************************/ /*! @brief Initializes serial interface and baud rate @param baudrate Sensor's UART baud rate (usually 57600, 9600 or 115200) */ /**************************************************************************/ void Adafruit_Fingerprint::begin(uint32_t baudrate) { delay(1000); // one second delay to let the sensor 'boot up' if (hwSerial) hwSerial->begin(baudrate); #if defined(__AVR__) || defined(ESP8266) if (swSerial) swSerial->begin(baudrate); #endif } /**************************************************************************/ /*! @brief Verifies the sensors' access password (default password is 0x0000000). A good way to also check if the sensors is active and responding @returns True if password is correct */ /**************************************************************************/ boolean Adafruit_Fingerprint::verifyPassword(void) { return checkPassword() == FINGERPRINT_OK; } uint8_t Adafruit_Fingerprint::checkPassword(void) { GET_CMD_PACKET(FINGERPRINT_VERIFYPASSWORD, (uint8_t)(thePassword >> 24), (uint8_t)(thePassword >> 16), (uint8_t)(thePassword >> 8), (uint8_t)(thePassword & 0xFF)); if (packet.data[0] == FINGERPRINT_OK) return FINGERPRINT_OK; else return FINGERPRINT_PACKETRECIEVEERR; } /**************************************************************************/ /*! @brief Ask the sensor to take an image of the finger pressed on surface @returns <code>FINGERPRINT_OK</code> on success @returns <code>FINGERPRINT_NOFINGER</code> if no finger detected @returns <code>FINGERPRINT_PACKETRECIEVEERR</code> on communication error @returns <code>FINGERPRINT_IMAGEFAIL</code> on imaging error */ /**************************************************************************/ uint8_t Adafruit_Fingerprint::getImage(void) { SEND_CMD_PACKET(FINGERPRINT_GETIMAGE); } /**************************************************************************/ /*! @brief Ask the sensor to convert image to feature template @param slot Location to place feature template (put one in 1 and another in 2 for verification to create model) @returns <code>FINGERPRINT_OK</code> on success @returns <code>FINGERPRINT_IMAGEMESS</code> if image is too messy @returns <code>FINGERPRINT_PACKETRECIEVEERR</code> on communication error @returns <code>FINGERPRINT_FEATUREFAIL</code> on failure to identify fingerprint features @returns <code>FINGERPRINT_INVALIDIMAGE</code> on failure to identify fingerprint features */ uint8_t Adafruit_Fingerprint::image2Tz(uint8_t slot) { SEND_CMD_PACKET(FINGERPRINT_IMAGE2TZ, slot); } /**************************************************************************/ /*! @brief Ask the sensor to take two print feature template and create a model @returns <code>FINGERPRINT_OK</code> on success @returns <code>FINGERPRINT_PACKETRECIEVEERR</code> on communication error @returns <code>FINGERPRINT_ENROLLMISMATCH</code> on mismatch of fingerprints */ uint8_t Adafruit_Fingerprint::createModel(void) { SEND_CMD_PACKET(FINGERPRINT_REGMODEL); } /**************************************************************************/ /*! @brief Ask the sensor to store the calculated model for later matching @param location The model location # @returns <code>FINGERPRINT_OK</code> on success @returns <code>FINGERPRINT_BADLOCATION</code> if the location is invalid @returns <code>FINGERPRINT_FLASHERR</code> if the model couldn't be written to flash memory @returns <code>FINGERPRINT_PACKETRECIEVEERR</code> on communication error */ uint8_t Adafruit_Fingerprint::storeModel(uint16_t location) { SEND_CMD_PACKET(FINGERPRINT_STORE, 0x01, (uint8_t)(location >> 8), (uint8_t)(location & 0xFF)); } /**************************************************************************/ /*! @brief Ask the sensor to load a fingerprint model from flash into buffer 1 @param location The model location # @returns <code>FINGERPRINT_OK</code> on success @returns <code>FINGERPRINT_BADLOCATION</code> if the location is invalid @returns <code>FINGERPRINT_PACKETRECIEVEERR</code> on communication error */ uint8_t Adafruit_Fingerprint::loadModel(uint16_t location) { SEND_CMD_PACKET(FINGERPRINT_LOAD, 0x01, (uint8_t)(location >> 8), (uint8_t)(location & 0xFF)); } /**************************************************************************/ /*! @brief Ask the sensor to transfer 256-byte fingerprint template from the buffer to the UART @returns <code>FINGERPRINT_OK</code> on success @returns <code>FINGERPRINT_PACKETRECIEVEERR</code> on communication error */ uint8_t Adafruit_Fingerprint::getModel(void) { SEND_CMD_PACKET(FINGERPRINT_UPLOAD, 0x01); } /**************************************************************************/ /*! @brief Ask the sensor to delete a model in memory @param location The model location # @returns <code>FINGERPRINT_OK</code> on success @returns <code>FINGERPRINT_BADLOCATION</code> if the location is invalid @returns <code>FINGERPRINT_FLASHERR</code> if the model couldn't be written to flash memory @returns <code>FINGERPRINT_PACKETRECIEVEERR</code> on communication error */ uint8_t Adafruit_Fingerprint::deleteModel(uint16_t location) { SEND_CMD_PACKET(FINGERPRINT_DELETE, (uint8_t)(location >> 8), (uint8_t)(location & 0xFF), 0x00, 0x01); } /**************************************************************************/ /*! @brief Ask the sensor to delete ALL models in memory @returns <code>FINGERPRINT_OK</code> on success @returns <code>FINGERPRINT_BADLOCATION</code> if the location is invalid @returns <code>FINGERPRINT_FLASHERR</code> if the model couldn't be written to flash memory @returns <code>FINGERPRINT_PACKETRECIEVEERR</code> on communication error */ uint8_t Adafruit_Fingerprint::emptyDatabase(void) { SEND_CMD_PACKET(FINGERPRINT_EMPTY); } /**************************************************************************/ /*! @brief Ask the sensor to search the current slot 1 fingerprint features to match saved templates. The matching location is stored in <b>fingerID</b> and the matching confidence in <b>confidence</b> @returns <code>FINGERPRINT_OK</code> on fingerprint match success @returns <code>FINGERPRINT_NOTFOUND</code> no match made @returns <code>FINGERPRINT_PACKETRECIEVEERR</code> on communication error */ /**************************************************************************/ uint8_t Adafruit_Fingerprint::fingerFastSearch(void) { // high speed search of slot #1 starting at page 0x0000 and page #0x00A3 GET_CMD_PACKET(FINGERPRINT_HISPEEDSEARCH, 0x01, 0x00, 0x00, 0x00, 0xA3); fingerID = 0xFFFF; confidence = 0xFFFF; fingerID = packet.data[1]; fingerID <<= 8; fingerID |= packet.data[2]; confidence = packet.data[3]; confidence <<= 8; confidence |= packet.data[4]; return packet.data[0]; } /**************************************************************************/ /*! @brief Ask the sensor for the number of templates stored in memory. The number is stored in <b>templateCount</b> on success. @returns <code>FINGERPRINT_OK</code> on success @returns <code>FINGERPRINT_PACKETRECIEVEERR</code> on communication error */ /**************************************************************************/ uint8_t Adafruit_Fingerprint::getTemplateCount(void) { GET_CMD_PACKET(FINGERPRINT_TEMPLATECOUNT); templateCount = packet.data[1]; templateCount <<= 8; templateCount |= packet.data[2]; return packet.data[0]; } /**************************************************************************/ /*! @brief Set the password on the sensor (future communication will require password verification so don't forget it!!!) @param password 32-bit password code @returns <code>FINGERPRINT_OK</code> on success @returns <code>FINGERPRINT_PACKETRECIEVEERR</code> on communication error */ /**************************************************************************/ uint8_t Adafruit_Fingerprint::setPassword(uint32_t password) { SEND_CMD_PACKET(FINGERPRINT_SETPASSWORD, (password >> 24), (password >> 16), (password >> 8), password); } /**************************************************************************/ /*! @brief Helper function to process a packet and send it over UART to the sensor @param packet A structure containing the bytes to transmit */ /**************************************************************************/ void Adafruit_Fingerprint::writeStructuredPacket(const Adafruit_Fingerprint_Packet & packet) { SERIAL_WRITE_U16(packet.start_code); SERIAL_WRITE(packet.address[0]); SERIAL_WRITE(packet.address[1]); SERIAL_WRITE(packet.address[2]); SERIAL_WRITE(packet.address[3]); SERIAL_WRITE(packet.type); uint16_t wire_length = packet.length + 2; SERIAL_WRITE_U16(wire_length); uint16_t sum = ((wire_length) >> 8) + ((wire_length) & 0xFF) + packet.type; for (uint8_t i = 0; i < packet.length; i++) { SERIAL_WRITE(packet.data[i]); sum += packet.data[i]; } SERIAL_WRITE_U16(sum); return; } /**************************************************************************/ /*! @brief Helper function to receive data over UART from the sensor and process it into a packet @param packet A structure containing the bytes received @param timeout how many milliseconds we're willing to wait @returns <code>FINGERPRINT_OK</code> on success @returns <code>FINGERPRINT_TIMEOUT</code> or <code>FINGERPRINT_BADPACKET</code> on failure */ /**************************************************************************/ uint8_t Adafruit_Fingerprint::getStructuredPacket(Adafruit_Fingerprint_Packet * packet, uint16_t timeout) { uint8_t byte; uint16_t idx = 0, timer = 0; while (true) { while (!mySerial->available()) { delay(1); timer++; if ( timer >= timeout) { #ifdef FINGERPRINT_DEBUG Serial.println("Timed out"); #endif return FINGERPRINT_TIMEOUT; } } byte = mySerial->read(); #ifdef FINGERPRINT_DEBUG Serial.print("<- 0x"); Serial.println(byte, HEX); #endif switch (idx) { case 0: if (byte != (FINGERPRINT_STARTCODE >> 8)) continue; packet->start_code = (uint16_t)byte << 8; break; case 1: packet->start_code |= byte; if (packet->start_code != FINGERPRINT_STARTCODE) return FINGERPRINT_BADPACKET; break; case 2: case 3: case 4: case 5: packet->address[idx - 2] = byte; break; case 6: packet->type = byte; break; case 7: packet->length = (uint16_t)byte << 8; break; case 8: packet->length |= byte; break; default: packet->data[idx - 9] = byte; if ((idx - 8) == packet->length) return FINGERPRINT_OK; break; } idx++; } // Shouldn't get here so... return FINGERPRINT_BADPACKET; }
а сам код ошибки? копипастом
Вот код ошибки
Библиотеки все установленые
Николь, Вы первый раз за всё это взялись? В окошке, где написано про "exit status 1" скроллбар видите? Там выше ещё много текста есть. Там написано в каком файле в какой строке и какая именно ошибка найдена. Этот текст вас и просят показать. Только не картинкой, а именно текстом. Чтобы весь его скопировать предназначена специальная кнопка (справа на оранжевой полосе).
И ещё. То что приведено в начальном сообщении - это не скетч. Это какой-то файл библиотеки. Возможно, нужный для работы скетча. Но это не сам скетч. Кстати, по ссылке я скетча тоже не нашёл. Похоже, что автор той статьи забыл его выложить. Так что, сообщение об ошибке ничем не поможет - скетч писать надо!
мартышка к старости слаба глазами стала )))
"Шахерезада вместо ласки, ему всю ночь рассказывала сказки"... я о том, что в статье выложили не скетч, а библиотеку... )))
Там целая красная страницаю))) Сможешь ли ты какото помочь со скетчем. Младшему брату я обещала помочь)))
там нет скетча, вас обманули
Николь, Вам самое простое найти аналогичный проект, в котором есть всё необходимое. Например в статье по ссылке в конце есть видео с ютуба. Если перейти на ютуб, то там в рекомендациях сразу несколько подобных проектов появится. Вот например пара проектов - вроде что-то подобное и со всеми исходниками (но сильно я не вникал):
https://www.youtube.com/watch?v=7xickzmn49M
https://www.instructables.com/id/How-to-Setup-Fingerprint-Sensor-With-Arduino/
Здесь в целом больше любят, когда со своим скетчем приходят. А если кто-то с вопросами по чужому проекту обращается, то его обычно или к автору проекта посылают или в коммерческий раздел "Ищу исполнителя".
И ещё. На форуме были темы про датчик отпечатка пальца. Сверху в поиске Fingerprint введите - может среди результатов что-то полезное найдётся.
Вы мне очень помогли уже. Да эта тема очень похожа https://www.youtube.com/watch?v=7xickzmn49M, но же собирала по другому принципу через транзистор и акумулятор. Может ли свами связаться напрямую в телеграме например если вы согласные. Так как я не опытная и могу что-то в скетче написать не так. А вы разбираетесь в этом.
Вы мне очень помогли уже. Да эта тема очень похожа https://www.youtube.com/watch?v=7xickzmn49M, но же собирала по другому принципу через транзистор и акумулятор. Может ли свами связаться напрямую в телеграме например если вы согласные. Так как я не опытная и могу что-то в скетче написать не так. А вы разбираетесь в этом.
Я этот сканер отпечатка пальца только на картинках и видел. Так что вряд ли сильно помочь могу.
Теоретически, скетч из вот этого проекта на ютубе должен работать и с Вашей схемой. Там даже одни и те же пины задействованы. Так что заливайте его в ардуину. Может и сразу заработает! Если нет, рассказывайте здесь, что не так. Может кому ещё пригодится.
Скетч то я заливаю в ардуинку(тот другой), но замок не открываеться. я чуть не рыдаю- ни*** не получаеться. Замок как не открывался так и не открываеться. Может ли вы знаете кто может помочь написать скетч???
Скетч то я заливаю в ардуинку(тот другой), но замок не открываеться. я чуть не рыдаю- ни*** не получаеться. Замок как не открывался так и не открываеться. Может ли вы знаете кто может помочь написать скетч???
Можете попробовать создать тему в разделе ищу исполнителя. Напишите что-то типа - есть такое-то железо требуется помощь в сборке и написание скетча.
А палец-то в сенсор записать удалось? Там в видео всё есть. Сначала надо с помощью скетча-примера от библиотеки записать в сенсор отпечаток пальца. Это сделали? А потом уж заливать скетч для работы с замком.
да все записала
я покдлючала через транзистор, не знаю почему не работает
да все записала
Уже хорошо. Скетч для работы с замком должен в монитор порта выводить информацию. Показывайте, что он там пишет.
Сначала должен написать, что сенсор найден, далее, что сенсор содержит столько-то шаблонов, далее что ждёт палец. И если приложен правильный палец, то тоже об этом сообщается.
...далее что ждёт палец. И если приложен правильный палец, то тоже об этом сообщается.
а как он узнаёт, что палец правильный?
По ссылке, что вы приводили вроде всё описано )))
А для того, чтобы помочь как минимум надо иметь под рукой такой девайс...
работает ))) надо было поменять транзистор полюсами. провтикала!!! сейчас другая проблема замок не розмыкаеться когда палец забирать ))))
надо думаю с делеем поработать ))
Удачи. спасибо что помогал !!! ты очень помог !!!!)))
надо думаю с делеем поработать ))
Step 6: Enroll the Finger Prints
first we need to enroll the fingers into the EPROM of our Sensor module, so we will follow these steps to enroll our fingerprints.
Уже работает)) только размыкаеться ))) но не размикаеться ))) Типу открываеться но не закрываеться если палец убрать))) меняла делей не помогло) код тут
не знаю почему если палец убрать напряжения не падает???
А транзистор и его включение точно такие как в исходном проекте описаны?
Есть у меня одно предположение, но не очень представляю как такое можно было достичь. Короче, интересно было бы убедиться каким уровнем (HIGH или LOW) на управляющем пине (electronic_lock) замок открывается, а каким закрывается?
Можно в скетч после строки 24 добавить строчку один раз digitalWrite(12, HIGH); а другой раз digitalWrite(12, LOW); и посмотреть в каком состоянии будет замок в первом и во втором случае. Если в первом открыт, а во втором закрыт, то значит всё правильно - должно работать. А если будет наоборот, то в строках 62 и 64 поменять местами HIGH и LOW.