Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   27 / 851
(#) erdeidominik1999 hozzászólása Ápr 8, 2014 /
 
Arduinóhoz van egy sketch-em de valamiért nem működik, azt írja hibának, hogy:a client osztály új neve: ethernetClient. Mi lehet a probléma? Előre is köszönöm!

  1. #include <Ethernet.h>
  2.  #include <WString.h>
  3.  #include <EEPROM.h>
  4.  #define UPDATE_INTERVAL 30000
  5.  // if the connection is good wait 30 seconds should not be less than 5
  6.  int ledR = 8;
  7.  int ledG = 9;
  8.  unsigned long pubblica=0;
  9.  byte mac[] = { 0x54,0x55,0x58,0x10,0x00,0x24 };
  10.  byte ip[] = { 192, 168, 0, 98 };
  11.  byte domainaddrip[]= { 208, 78, 70, 70 }; //http://checkip.dyndns.com/
  12.  byte ipAddr[4];
  13.  byte domaindydns[]= { 204, 13, 248, 112 }; // members.dyndns.org
  14.  char hostname[ ] = "xxxxxxx.getmyip.com";
  15.  char userpwdb64[ ] = "xxxxxxxxxxxxxxxxxx";
  16.  //http://www.functions-online.com/base64_encode.html
  17.  use-> username:password
  18.  String ipadsl = String(20);
  19.  String ipadslold = String(20);
  20.  String inString = String(51);
  21.  const char* ip_to_str(const uint8_t*);
  22.  Client client(domainaddrip, 80);
  23.  Client clientdyn(domaindydns, 80);
  24.  void setup()
  25.  {
  26.  pinMode(ledR, OUTPUT);
  27.  pinMode(ledG, OUTPUT);
  28.  Ethernet.begin(mac, ip);
  29.  Serial.begin(9600);
  30.  Serial.println("*********Start*******");
  31.  delay(1000);
  32.  }
  33.  void loop()
  34.  {
  35.  if (millis() < pubblica) pubblica = millis();
  36.  if ((millis() - pubblica) > UPDATE_INTERVAL){
  37.  Serial.print("tempo trascorso dall'accensione ");
  38.  Serial.println(millis());
  39.  Serial.println(pubblica);
  40.  pubblica = millis();
  41.  acquisisciip();
  42.  }
  43.  }
  44.  void acquisisciip()
  45.  {
  46.  int timeout=0;
  47.  int skip=0;
  48.  ipadsl="";
  49.  inString="";
  50.  digitalWrite(ledG, HIGH);
  51.  Serial.print("connecting to ");
  52.  if (client.connect()) {
  53.  Serial.println("connected");
  54.  client.println("GET / HTTP/1.0");
  55.  client.print("HOST: ");
  56.  client.println("www.dyndns.com");
  57.  client.println();
  58.  } else {
  59.  Serial.println("connection failed");
  60.  }
  61.  while (!client.available() && timeout<50)
  62.  {
  63.  timeout++;
  64.  Serial.print("Time out ");
  65.  Serial.println(timeout);
  66.  delay(100);
  67.  }
  68.  while (client.available())
  69.  {
  70.  char c = client.read();
  71.  skip++;
  72.  if (skip>220)
  73.  {
  74.  if ((inString.length())<50) inString.append(c);
  75.  }
  76.  }
  77.  client.flush();
  78.  if ((inString.length())>5){
  79.  if (inString.contains("Address")){
  80.  int from=(inString.indexOf("Address")+9);
  81.  int lunghe=inString.length();
  82.  int to=(lunghe-16);
  83.  ipadsl=inString.substring(from,to);
  84.  Serial.print("IP rilevato dal sito: >");
  85.  Serial.print(ipadsl);
  86.  Serial.println("<");
  87.  }
  88.  }
  89.  if (!client.connected()){
  90.  Serial.println("disconnecting.");
  91.  client.stop();
  92.  delay (1000);
  93.  Serial.print("lunghezza IP ");
  94.  Serial.println(ipadsl.length());
  95.  if ((strlen(ipadsl))!=0){
  96.  Serial.print("IP nuovo : >");
  97.  Serial.print(ipadsl);
  98.  Serial.println("<");
  99.  for (int i=0; i<(ipadsl.length()); i++) {
  100.  //salva in memoria l'indirizzo acquisito
  101.  ipadslold[i] = EEPROM.read(i);
  102.  }
  103.  Serial.print("IP vecchio: >");
  104.  Serial.print(ipadslold);
  105.  Serial.println("<");
  106.  if (strcmp(ipadsl,ipadslold)){
  107.  Serial.println("IP diverso PUBBLICO");
  108.  digitalWrite(ledR, HIGH);
  109.  pubblicaip();
  110.  digitalWrite(ledR, LOW);
  111.  }
  112.  else
  113.  {
  114.  Serial.println("IP uguale");
  115.  }
  116.  digitalWrite(ledG, LOW);
  117.  for (int i=0; i<(ipadsl.length()); i++) {
  118.  //salva in memoria l'indirizzo acquisito
  119.  EEPROM.write(i, ipadsl[i]);
  120.  }
  121.  }
  122.  }
  123.  }
  124.  void pubblicaip()
  125.  {
  126.  int timeout=0;
  127.  Serial.print("connecting to ");
  128.  Serial.println(ip_to_str(domaindydns));
  129.  Serial.print("IP da pubblicare ");
  130.  Serial.println(ipadsl);
  131.  if (clientdyn.connect()) {
  132.  Serial.println("connected");
  133.  clientdyn.print("GET /nic/update?hostname=");
  134.  clientdyn.print(hostname);
  135.  clientdyn.print("&myip=");
  136.  clientdyn.print(ipadsl);
  137.  clientdyn.println(" HTTP/1.0 ");
  138.  clientdyn.print("Host: ");
  139.  clientdyn.println(ip_to_str(domaindydns));
  140.  clientdyn.print("Authorization: Basic ");
  141.  clientdyn.println(userpwdb64);
  142.  clientdyn.println
  143.  ("User-Agent: futura - arduinodydns - 1.1");
  144.  clientdyn.println();
  145.  } else {
  146.  Serial.println("connection failed");
  147.  }
  148.  while (!clientdyn.available() && timeout<50) {
  149.  timeout++;
  150.  Serial.print("Time out ");
  151.  Serial.println(timeout);
  152.  delay(100);
  153.  }
  154.  while (clientdyn.available()) {
  155.  if (clientdyn.available())
  156.  {
  157.  char c = clientdyn.read();
  158.  Serial.print(c);
  159.  }
  160.  }
  161.  if (!clientdyn.connected()){
  162.  Serial.println();
  163.  Serial.println("disconnecting.");
  164.  clientdyn.stop();
  165.  }
  166.  }
  167.  //This is just a little utility function
  168.  //to format an IP address as a string.
  169.  const char* ip_to_str(const uint8_t* ipAddr)
  170.  {
  171.  static char buf[16];
  172.  sprintf(buf, "%d.%d.%d.%d\0", ipAddr[0],
  173.  ipAddr[1], ipAddr[2], ipAddr[3]);
  174.  return buf;
  175.  }
(#) TavIR-AVR válasza erdeidominik1999 hozzászólására (») Ápr 8, 2014 /
 
1, Arduino-0023 és az Arduino-1.x.x átírásra került. Sok eljáráskönyvtár pl.
2, Az ethernet chipből az ENC28J60 és a W5100 is elterjedt . Az Arduino (eredetileg) az W5100-t használja.

A kódodból semmi nem derül ki. Sem a helye, sem a környezet amiből kivetted.
Olyan minta egy ellenállást lobogtatnál és megkéred: Ez mire való ?
(#) GPeti1977 hozzászólása Ápr 8, 2014 /
 
Gyakran előfordul hogy régebbi 0.23 verziójú Arduino-hoz készült könyvtárat kellene használni 1.x Arduino-hoz vagy fordítva. Ilyenkor nagyon nehéz átírni mert ezek igazi C-ben íródtak.
Nincs valami olyan program ami automatikusan átkonvertálna az egyikről a másikra?
Vagy nem tudnánk összegyűjteni gyakran előforduló változtatásokat?
(#) erdeidominik1999 hozzászólása Ápr 8, 2014 /
 
Akkor mi lehet a megoldás?
(#) TavIR-AVR válasza GPeti1977 hozzászólására (») Ápr 8, 2014 /
 
Nem. Tedd fel a Arduino-0023-at. Nem kell vacakolni vele....
(#) GPeti1977 válasza TavIR-AVR hozzászólására (») Ápr 8, 2014 /
 
Az is megvan itt meg az a gond hogy az 1.x kellene vissza konvertálni. De ez nagyon kellene mert mpide is használok. Sőt úgy is jártam már hogy egy projektbe különböző verziójú könyvtárakat találtam.
(#) JonSnow hozzászólása Ápr 10, 2014 /
 
Üdvözlet!

Ma érkezett meg az Arduino Mega 2560 -om, amit már sikeresen programoztam a gyári arduino szoftverrel, viszont mivel eddig IAR-t használtam MSP430 programozásához, ezután is azt szeretném, persze Atmel AVR verzióval, vagy esetleg Atmel AVR Studio-t használnék. A problémám az, hogy IAR-ban és az Atmel Studióban sincs olyan programozó amivel működne a fordítás/debuggolás.
Arduino szoftverben AVR ISP, AVRISP mkii, USBtinyISP programozók mindegyikével sikeres a feltöltés.
Hogyan lehetne IAR, Atmel Studio-ban is ezeket használni ?
(#) icserny válasza JonSnow hozzászólására (») Ápr 10, 2014 /
 
Az IAR honlapja szerint ezek a támogatott eszközök:
AVR ICE200
AVR JTAGICE
AVR JTAGICE mkII
AVR JTAGICE3
AVR® ONE!
AVR Dragon
(#) TavIR-AVR válasza JonSnow hozzászólására (») Ápr 11, 2014 /
 
Tévedés. Arduinoban STK500v2 bootloader van. STK500-nak mondja magét _amikor feltölt_. Használd a arduino beépített avr-dude programját a _lefordított_ hex feltöltéshez.
(#) tcsonka hozzászólása Ápr 15, 2014 /
 
Sziasztok

Arduino Uno-val vezérelek egy SIM900-as GSM modult AT parancsokkal. SMS küldésnel az AT parancs és a céltelefonszám beírása után magára az SMS szövegre csak 30 karakter körüli hely marad a 64 byte bufferméret miatt. Meg lehet a bufferméretet valahogy növelni?
(#) TavIR-AVR válasza tcsonka hozzászólására (») Ápr 15, 2014 /
 
A buffert növeld meg az USART.h-ban (vagy a serial.h-ban). Fejből írom, remélem nem tévedek nagyot...
(#) icserny válasza tcsonka hozzászólására (») Ápr 15, 2014 / 1
 
HardwareSerial.cpp-ben lehet próbálkozni (arduino-1.0.5/hardware/arduino/cores/arduino/ mappa):
  1. #if (RAMEND < 1000)
  2.   #define SERIAL_BUFFER_SIZE 16
  3. #else
  4.   #define SERIAL_BUFFER_SIZE 64   //<--- Ezt akarod növelni?
  5. #endif


Arra vigyázz, hogy két buffernek is kell hely (rx_buffer és tx_buffer)!
(#) tcsonka válasza icserny hozzászólására (») Ápr 16, 2014 /
 
Az általad jelölt helyen módosítottam a 64-es értéket 128-ra. De az arduino-1.0.5/Libraries/SoftwareSerial/SoftwareSerial.h fájlban is módosítanom kellet az alábbi helyen:

#define _SS_MAX_RX_BUFF 64 // RX buffer size

Így már hosszabb szövegeket is átvisz.
Már csak azt kellene megoldanom, hogy ékezetes karaktereket is fogadjon a GSM MODEM. Erre van valakinek ötlete?
(#) icserny válasza tcsonka hozzászólására (») Ápr 16, 2014 /
 
Idézet:
„De az arduino-1.0.5/Libraries/SoftwareSerial/SoftwareSerial.h fájlban is módosítanom kellett”
Tulajdonképpen szoftveres vagy hardveres soros kapcsolatot használsz? A két felsorolt módosítás közül csak az egyikre van szükséged...
(#) tcsonka válasza icserny hozzászólására (») Ápr 16, 2014 /
 
Mindkettőt. Számítógépről egy terminálablak segítségével is adhatok utasításokat a mikrovezérlőnek (ez hardveres), majd a mikrovezérlő szoftveres soros kapcsolaton továbbítja a GSM modem felé a kért parancsokat.
(#) icserny válasza tcsonka hozzászólására (») Ápr 16, 2014 /
 
Na, ez így egy fokkal zavarosabb história, mint gondoltam.
(#) johny999 hozzászólása Ápr 16, 2014 /
 
Sziasztok,

használ valaki BMP085 légnyomásmérőt? Adafruit_Sensor ill Adafruit_BMP085 könyvtárak használatával per pillanat 1006hPa-t mutat. Viszont az idokep.hu szerint 1020hPa környékén van most a légnyomás. Hol lehet a hiba?

sensorapi.pde
    
(#) icserny válasza johny999 hozzászólására (») Ápr 16, 2014 /
 
Tengerszintre korrigálni kell. Az 1020 hPa, ami az időjárás jelentésben szerepel ugyanis tengerszintre átszámított érték.
(#) johny999 válasza icserny hozzászólására (») Ápr 16, 2014 /
 
Hehe, köszi. Akkor most már csak az a kérdés hogy a halaknak melyik légnyomás alapján változik a kapókedve
(#) GPeti1977 válasza icserny hozzászólására (») Ápr 16, 2014 /
 
Megnézed a gps által adott magasságot és azt elosztod 8-cal (közelítő érték) és az értéket hozzáadod a mért légnyomás értékhez, azaz kb ahol laksz 112m magasan van.
(#) johny999 válasza GPeti1977 hozzászólására (») Ápr 17, 2014 /
 
Köszi, 114m magasan vagyok. Osztva 8-al és hozzáadva a szenzorhoz stimmel az eredmény.
(#) BMW-M3 hozzászólása Ápr 17, 2014 /
 
Sziasztok!

Sajnos már csak 1 kimenetem maradt a mikrovezérlőn, viszont még 7 db ledet kéne fel-le kapcsolnom feltételtől függően. Megoldható ez valahogyan?
(#) GPeti1977 válasza BMW-M3 hozzászólására (») Ápr 17, 2014 /
 
Softveres serial portot nyitsz ez lesz csak tx láb és egy másik kis mikrokontrollerrel veszed a parancsokat amivel ledet kapcsolgatsz.
(#) t0bi válasza BMW-M3 hozzászólására (») Ápr 17, 2014 /
 
Nem éri meg, de meg lehet. PWM-mel 7 különböző egyenszintet állíthatsz elő, mind a hét LED elé egy-egy komparátor és kész. Inkább válassz nagyobb mikrovezérlőt.
(#) GPeti1977 válasza t0bi hozzászólására (») Ápr 17, 2014 /
 
Lehet egyszerre nem csak egy led világítana így már ez a pwm megoldás nem jó különösen ha nem hardveres pwm láb maradt szabadon.
(#) BMW-M3 hozzászólása Ápr 17, 2014 /
 
Igazából PWM láb van szabadon és egyszerre csak 1 led kell. De ez a komparátoros dolog hogyan működik? Be tudsz rajta állítani feszültség tartományokat?
(#) GPeti1977 válasza BMW-M3 hozzászólására (») Ápr 17, 2014 /
 
Akkor inkább uaa180 még egy két helyen lehet kapni.
(#) TavIR-AVR válasza BMW-M3 hozzászólására (») Ápr 18, 2014 /
 
DS2408-as 1-wire 8-bites portbővítő.
1 láb kell neki + táp.
(#) Kera_Will válasza TavIR-AVR hozzászólására (») Ápr 19, 2014 /
 
Lehet az sem kell .
1 sima shift regiszter aminek a CLOCK DATA LATCH lábait különböző idő állandójú R/C tagokkal kötni fel az 1 bites kimenetre.
A vezérlés állapotát pedig a porton lévő impulzus szélessége dönti el.
LCD kijelzőt is hajtottak meg így ... lehet éppen itt is HE-n van 1 cikk róla írva.
WEBen biztos ...
A hozzászólás módosítva: Ápr 19, 2014
(#) Kera_Will válasza Kera_Will hozzászólására (») Ápr 19, 2014 / 1
 
MEgtaláltam

1biten keresztüli shift regiszteres vezérlés

Persze mi az olcsóbb 1 db alap shiftregiszter + 2/2 RC tag + 1kicsit több agyalás a szoftveren
Némi kompromisszummal.
Vagy az OneWire IC-k beszerzése és használata.
Igaz van OneWire library is az Arduinohoz .
A hozzászólás módosítva: Ápr 19, 2014
Következő: »»   27 / 851
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem