Скетч на итальнском
- Войдите на сайт для отправки комментариев
Пт, 02/11/2018 - 11:17
Доброго времени суток! Помогите пожалуйста с переводом кола с итальянского на английский...(оговорюсь сразу что переводчики не помогли так как нарушается роботоспособность данного скетча..
// Libraries for DS1307 RTC #include <Wire.h> #include <RTClib.h> // Keyboard libraries #include <Key.h> #include <Keypad.h> // Libraries for creating OTP codes #include <sha1.h> #include <TOTP.h> // Serial software for the display #include <SoftwareSerial.h> // config file #include "CONFIG.h" // variables RTC_DS1307 rtc; Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, KEY_ROWS, KEY_COLUMNS); SoftwareSerial displaySerial(A1, A2); TOTP totp = TOTP(hmacKey, 10); char codiceInserito[7]; int codiceIndex; char bufferSeriale[14]; int serialIndex; void setup() { // Initialize RTC is configured the time when the sketch was compiled Wire.begin(); rtc.begin(); // Initialize serial communication Serial.begin(9600); displaySerial.begin(9600); // Expect the display boot and the disappearance of the splash screen delay(500); Serial.println("Door lock OTP"); Serial.println(); // Initialization PIN pinMode(PIN_BUZZER, OUTPUT); pinMode(PIN_LEDROSSO, OUTPUT); pinMode(PIN_LEDVERDE, OUTPUT); pinMode(PIN_RELAY, OUTPUT); // Initialize variables codiceIndex = -1; serialIndex = -1; // Initial state, lock CLOSED pulisciSchermo(); cambiaStatoSerratura(false); aggiornaSecondaRiga(); } void loop() { // Check whether you have received a serial character if (Serial.available() > 0) { byte inByte = Serial.read(); // If the received byte is the character of NewLine (0x0A) interpret the command received if(inByte == 0x0A) eseguiComandoSeriale(); // Otherwise I record in the buffer else { serialIndex++; if(serialIndex == 14) serialIndex = 0; bufferSeriale[serialIndex] = inByte; } } // Check if you press a key on the keyboard char key = keypad.getKey(); if (key != NO_KEY){ // Emit a sound #ifdef BUZZER_ON tone(PIN_BUZZER, 440); delay(100); noTone(PIN_BUZZER); #endif // If the key is a number, I visualize and memorize the array if(key - '0' >= 0 && key - '0' < 10) { codiceIndex++; codiceInserito[codiceIndex] = key; displaySerial.write(key); // If it were inserted 6 digits, check the code if(codiceIndex == 5) verificaCodice(); } // If the button is '*' gate the last number entered else if(key == '*' && codiceIndex >= 0) { codiceIndex--; aggiornaSecondaRiga(); } // If the button is '#' it resets the insertion else if(key == '#') { codiceIndex = -1; aggiornaSecondaRiga(); } } } void eseguiComandoSeriale() { // Possible commands are: //? displays date and time from the RTC beds //! GgMMaahhmmss sets the new date and time (dd / mm / yy hh: mm: ss) RTC // Reset the buffer serialIndex = -1; if(bufferSeriale[0] == '?') stampaDataOra(); else if(bufferSeriale[0] == '!') { // Verify that the twelve following characters are numbers for(int i = 1; i < 13; i++) if(!isDigit(bufferSeriale[i])) { Serial.print(F("Carattere non valido (non e' un numero): ")); Serial.println(bufferSeriale[i]); return; } // Convert in two by two in number characters int giorno = (bufferSeriale[1] - '0') * 10 + (bufferSeriale[2] - '0'); int mese = (bufferSeriale[3] - '0') * 10 + (bufferSeriale[4] - '0'); int anno = 2000 + (bufferSeriale[5] - '0') * 10 + (bufferSeriale[6] - '0'); int ora = (bufferSeriale[7] - '0') * 10 + (bufferSeriale[8] - '0'); int minuti = (bufferSeriale[9] - '0') * 10 + (bufferSeriale[10] - '0'); int secondi = (bufferSeriale[11] - '0') * 10 + (bufferSeriale[12] - '0'); // I perform data validation checks if(giorno < 1 || giorno > 31) { Serial.print(F("Il giorno specificato non e' valido: ")); Serial.println(giorno); return; } if(mese < 1 || mese > 12) { Serial.print(F("Il mese specificato non e' valido: ")); Serial.println(mese); return; } if(ora > 24) { Serial.print(F("L'ora specificata non e' valida: ")); Serial.println(ora); return; } if(minuti > 59) { Serial.print(F("I minuti specificati nono sono validi: ")); Serial.println(minuti); return; } if(secondi > 59) { Serial.print(F("I secondi specificati non sono validi: ")); Serial.println(secondi); return; } // Save time and visualize updated rtc.adjust(DateTime(anno, mese, giorno, ora, minuti, secondi)); Serial.println(F("RTC aggiornato")); stampaDataOra(); } else { Serial.print(F("Comando sconosciuto: ")); Serial.println(bufferSeriale[0]); } } void stampaDataOra() { DateTime now = rtc.now(); Serial.print(F("Data e ora attuali: ")); Serial.print(now.day(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.year(), DEC); Serial.print(" "); Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); } void cambiaStatoSerratura(bool serraturaAperta) { if(serraturaAperta) { digitalWrite(PIN_RELAY, HIGH); digitalWrite(PIN_LEDVERDE, HIGH); digitalWrite(PIN_LEDROSSO, LOW); displaySerial.write(254); displaySerial.write(128); displaySerial.write(" APERTA "); } else { digitalWrite(PIN_RELAY, LOW); digitalWrite(PIN_LEDVERDE, LOW); digitalWrite(PIN_LEDROSSO, HIGH); displaySerial.write(254); displaySerial.write(128); displaySerial.write(" CHIUSA "); } } void pulisciSchermo() { displaySerial.write(254); displaySerial.write(128); displaySerial.write(" "); displaySerial.write(" "); } void aggiornaSecondaRiga() { displaySerial.write(254); displaySerial.write(192); displaySerial.write("PIN --> "); displaySerial.write(254); displaySerial.write(200); for(int i = 0; i <= codiceIndex; i++) displaySerial.write(codiceInserito[i]); } void verificaCodice() { // Get the current timestamp from the RTC and I divide it by 30 (TimeStep Google Authenticator) DateTime now = rtc.now(); long GMT = now.unixtime(); long timeStep = GMT / 30; // Verify if the code matches one of the three codes "close" to the current timestamp bool codiceOk = false; for(int i = -1; i <= 1; i++) { char* codiceGenerato = totp.getCodeFromSteps(timeStep + i); Serial.println(codiceGenerato); if(strcmp(codiceInserito, codiceGenerato) == 0) codiceOk = true; } // I clean the screen pulisciSchermo(); // If the code is ok, it emits a sound and I open the lock if(codiceOk) { #ifdef BUZZER_ON tone(PIN_BUZZER, 660); delay(100); noTone(PIN_BUZZER); delay(200); tone(PIN_BUZZER, 660); delay(100); noTone(PIN_BUZZER); #endif cambiaStatoSerratura(true); // If the mode is MODO_IMPULSO, look TEMPO_APERTURA milliseconds so I close the lock if(modoSerratura == MODO_IMPULSO) { delay(TEMPO_APERTURA); cambiaStatoSerratura(false); } // If it is MODO_STABILE, expect the pressure of TASTO_CHIUSURA button then close the lock else { char key; do { key = keypad.getKey(); } while(key != TASTO_CHIUSURA); cambiaStatoSerratura(false); } } // If the code is wrong, I see a message and emit a sound else { for(int i = 0; i < 3; i++) { #ifdef BUZZER_ON tone(PIN_BUZZER, 220); #endif displaySerial.write(254); displaySerial.write(128); displaySerial.write(" CODICE ERRATO! "); delay(500); #ifdef BUZZER_ON noTone(PIN_BUZZER); #endif pulisciSchermo(); delay(500); } displaySerial.write(254); displaySerial.write(128); displaySerial.write(" CHIUSA "); } // reset codiceIndex = -1; aggiornaSecondaRiga(); }
Охренеть.
Надо переводчик доработать?
ПС. Так мы скоро дождемся и "помогите! бумажка в сортире закончилась!" Инфантилы вконец уху кушают.
а он чо, по-итальянске плохо работает? Аптамуш, у тебя Ардуина китайская. Купи родную, и код засверкает своими яркими красками.
Помогите пожалуйста с переводом кола с итальянского на английский..
Насколько я вижу, данный "кол" написан не С++, а не на итальянском. Потому перевести его с итальянского невозможно ввиду отсутствия предмета перевода. А если перевести с С++ на англиский, то он не будет работать, т.к. компилятора с английского в коды AVR в поставке IDE нет.
Или Вы имеете в виду перевести текстовые сообщения типа "Il giorno specificato non e' valido: "? Так переводите их в переводчике по одному и втавляйте - не ленитесь.
spannys - сколько платите? Итальянского не знаю, но знаю испанский - они очень похожи. Сообщения в скетче легко могу перевести без гугля
Или Вы имеете в виду перевести текстовые сообщения типа "Il giorno specificato non e' valido: "? Так переводите их в переводчике по одному и втавляйте - не ленитесь.
А форум тогда на что?
А форум тогда на что?
Тоже верно, чёт я не подумал.
Перевести не проблемма даже если по слову переводить... вся проблемма в том что после перевода скетч не проходит компиляцию....появляется куча ошибок... я не очень пока что силен в этом...
Ошибки тоже на италянском?
Ошибка синтаксисе команды или нескольких после перевода ... а я что то могу исправить а что то не выходит..
Звиздец, ты тугой.
услуги переводчика - $10
Spamys - а "итальянский" то код компилируется без ошибок и работает правильно? - вы проверяли?
А то может в нем исходно ошибки есть, и дело не в переводе?
Приложеный код удачно скомпилирован и залит.. выполняются почти все нужные функции.. (немогу пока понять по какой причине не работает экран и коды OTP с приложением не синхронизуруются.. а так работает..
Приложеный код удачно скомпилирован и залит.. выполняются почти все нужные функции.. (немогу пока понять по какой причине не работает экран и коды OTP с приложением не синхронизуруются.. а так работает..
а что там за нужные функции кроме экрана и клавиатуры?
Даный код предназначен лдя генерации одноразового пароля который привязан к телефону на основе общего секрета (пароля) екран в принципе и не нужен.. Тобиш.. даный девайс это кодовый замок который открывается одноразовым кодом..
готов попробовать перевести Вам сообщения с сохранением компилируемости кода. Но поскольку это потребует разбираться в скетче и ставить все библиотеки - не бесплатно.
Если хотите обсудить - пишите ded@cur-ex.ru
Не удается отправить вам сообщениена даную почту.. ваше предложение очень интересное во сколько обойдется ваша помощь? (Скажу сразу я студент...и средствами располагаю слабо..)
почта точно живая, попробуйте еще раз чуть позже. Или напишите свою
Понятно, т.е. получили задание. Нормального кода в сети не нашли, а код с итальянскими сообщениями показывать преподу боитесь, т.к. тот не поверит, что Вы сами писали (и правильно сделает, т.к. сами Вы даже текстовые константы поменять не можете). Всё правильно?
b707 и Вы всерьёз собрались помогать?
Блин, у нас тут есть специалист по таким "заказчикам", мож появится - наведёт порядок :)
b707 и Вы всерьёз собрались помогать?
Ну поможет, заработает денежку. А потом отправил информацию ректору, как сознательный гражданин :-)))
Так, вот и говорю. Куда ворота задевался? Он уже это проделывал с одним кренделем :)
Так, вот и говорю. Куда ворота задевался? Он уже это проделывал с одним кренделем :)
думаете диплом? - тогда я пас
Ну поможет, заработает денежку. А потом отправил информацию ректору, как сознательный гражданин :-)))
не, мы это уже обсуждали. "Сигнализировать" не стану. Просто откажусь делать.
Люди!!!! Что вы городите!? Не хотите что то путное подсказать -ПОМОЛЧИТЕ ТОГДА! Я начинающий ардуинщик нашел интересный девайс и хочу реализовать дома..
Так хотел бы, выложил бы свою попытку, и спросил бы что не так сделано. А так, похоже, хочется просто получить готовое.
Вот я и выложил целый код что бы вы как проффи помогли изменить язык.. я ж непрошу сделать за меня работу.. просто подскажите.. я ардуино только осваивать начал..
Так, те, кто хотят сделать, выкладывают свои коды, которые у них не работают, а не стыренные - работающие.
1) код НЕ ТЫРЕНЫЙ! А свободно распостроняемый!
2)Пока что я не умею писать такие проэкты так как с ардуино работаю недавно.. а девай нужен в ближайшее время..
1) код НЕ ТЫРЕНЫЙ! А свободно распостроняемый!
2)Пока что я не умею писать такие проэкты так как с ардуино работаю недавно.. а девай нужен в ближайшее время..
Нада исчо ношкой топнуть!!!
так что надо то ?
щоб это
стало этим
Что вроди этого.. в данном коде есть команды на итальянском.. после транслейта на английский ардуино ругаетя так как не хватает то переменных то нще чего то..
Только сами команды что бы коректно потом работали.
в данном коде есть команды на итальянском..
вы серьезно ?
например ?
Что вроди этого.. в данном коде есть команды на итальянском.. после транслейта на английский ардуино ругаетя так как не хватает то переменных то нще чего то..
Spamys - в данном коде НЕТ команд на итальянском. Если считаете иначе - приведите для примера номер строки с такой командой.
Все, что вам нужно сделать - это перевести ТОЛЬКО ТЕКСТОВЫЕ строки (в кавычках. подсвечены голубым в коде) Все, что "по-итальянски" в самом коде - ТРОГАТЬ НЕ НАДО.
ЕвгкенийП & dimax - обломали меня :) хотел похвастать знанием языков... не только языков программирования :)
Говорю по-русски. читаю на английском и испанском. пишу на Перле и Си. :))))
Я так и переводил.. что то проходит а что то потом ругается... вечером сяду за комп перепробую варианты отпишусь.. спасибо за подсказки ребят!
это имена переменных. Их, конечно, можно тоже перевести :) но для реальной задачи это нафик не нужно, так как абсолютно пофиг. как они называются - mese, month, месяц или вообще ds5665
Если для вас важно перевести эти идентификаторы - это доказывает. что это диплом...
хорошо, а это тады какой язык ?
Язык уси-пуси....
Ну так это в корни дело меняет! Я то думал что нужно все переводить..
Я так и переводил..
А нафига переводил-то?
Я ж не знал что не все переводить нужно то.. я ж говорю что только начал работу с ардуино..
хорошо, а это тады какой язык ?
Не, такой неправильно. Надо вот так:
Я ж не знал что не все переводить нужно то.. я ж говорю что только начал работу с ардуино..
Я ж не знал что не все переводить нужно то.. я ж говорю что только начал работу с ардуино..
Была же Рапира, почему нельзя Си, а у Тихонова отличный интерпретатор в его Инфо-Бухгалтере тоже на русском )))
ПС: Важен не язык, а наработаная база и популяроность среди людей занимающихся программированием.
А как же Мир-2?