enc28j60 besoin aide

enc28j60 jai ce board ethernet shield, jai pris lexemple web switch dans la librairie et jaimerais ajouter des boutton et des por ( pin 5, pin 6 pin 7 etc pour controler egalment via le reseau . Comment faire? comment faire aussi pour changer la couleur du background ou y mettre une image? Comment changer laspect des bouttons merci!!!!

6 post plus bas :cold_sweat: .

http://arduino.cc/forum/index.php/topic,66139.0.html
Bonne lecture. :grin:

salut chicotore, merci pour le post ca ma aidé a faire des truc avec mon foutu board, moi mon projet solo cest davoir des bouton qui active des sorties, le maximum de sorties et chaque sortie on un piton on/off ainsi que un timer pour chacun. pour linstant. mais c'Est pas fesable faut etre programeur pour y arriver, je continue a fouillier ici et la pour trouver des piste. Jaimerais au moins allumer 2 led independant avec mon board avec 2 boutton, quelqun a idées? ou toi Chicotore???

MERCI TLM POUR LES REPLY ET POST CA AIDE PAS MAL XD

bon mon inetrface ca va, mais la jaimerais avoir plus de 1 boutton on/off et a la fois dautre sorti controlable, comment on fait.... j'ai beau lire mais je comprend rien en rien dans lla prog lol :fearful:

merci tlm

Guillaume85:
j'ai beau lire mais je comprend rien en rien dans lla prog lol :fearful:

Il faut pas seulement lire, mais également faire des exercices :grin:

Sans rire, si tu ne comprends rien en prog, t'es pas sortis :blush:

Commence par ici :

http://www.siteduzero.com/tutoriel-3-14189-apprenez-a-programmer-en-c.html

http://www.siteduzero.com/tutoriel-3-11406-programmez-avec-le-langage-c.html

Et ensuite fait un tour sur cette page :

http://arduino.cc/forum/index.php/topic,67624.0.html

Ps. fais un petit effort sur ton écriture et mets tes apostrophes, ce sera plus facile à comprendre sans relire trois fois :grin:

Guillaume85:
mais c'Est pas fesable faut etre programeur pour y arriver.

Comme je l'ai déjà dit à chico, il va falloir s'investir un minimum en programmation et algo sinon tu n'iras pas loin, même pour des choses basiques comme tu le souhaites. JF t'a donné des pistes sur l'autre post avec le site du zero.
Je comprend pas trop pourquoi autant de personnes achètent sans s'être renseignés un minimum sur la faisabilité ou la manière d'utiliser l'objet. :frowning:

Ouais désolé, je mets la faute sur MSN et l'écriture rapide ]:smiley:

Je sais bien qu'il faudrait que j'étudis plus la programmation mais, c'est que j'ai seulement besoin de savoir comment créer d'autres boutons qui contrôlent d'autres sorties. Rien de plus pour le moment. Je m'étais dis que peut-être quelqu'un avait la réponse facile :roll_eyes:

Je vais faire des tests aujourd'hui et ne te gêne pas ainsi que les autres si vous avez mon code miracle :grin:

Merci tlm!

Pas compliqué, ça fait des miracles et c'est vaste mais, on ne veut pas apprendre le language et on veut toute savoir d'un coup. Défault humain! Mais aussi il y a le fait que pour faire des projets relativement simple, nous ne voulons pas s'investire dans l'apprentissage d'un code qui nous servira plus ou moins dans notre future et que certaines personnes connaissant les codes pourrais nous donner le nécessaire pour y arriver. Mais bon simple opinion.

Il y a longtemp, j'ai fait du viual basic a l'école et c'était très simple d'utilisation, je pensais que c'étais pareil mais non.... c'est bien plus compliqué 7-8 ans après :frowning:

Si tu veux utiliser une voiture tu apprends à la conduire, pas besoins non plus d'être mécanicien, mais malgré tout tu sais que tu dois mettre de l'essence et tu sais également où se trouve la trappe à essence, tu est certainement capable de prendre le pistolet à la pompe et faire le plein tout seul.... pour l'Arduino, c'est pareil, tu apprends à l'utiliser, tu trouve comment le remplir et avec quoi et ensuite tu peux même le faire tout seul XD et si tu veux faire de la mécanique après, tu cherches à comprendre les schémas électronique etc.... Voili, voilou XD

ça a du sens mon ami

J'ai l'exemple webswitch, j'allume une led avec un boutton , je met de la couleur, inscrit des mots, une image ..... et ca n'ouvre pas la page du server...c'est possible que certaines images ne sont possible ''uploader'' Arduino code me donne aucune erreures mais, la page de se load pas.

?

Plus la marche est haute et plus c'est difficile de la monter.
Donc réduis la hauteur de ta marche.

En langage plus terre à terre tu laisses tomber provisoirement ton projet et tu te fais la main avec de tout petits exemples, ensuite quand tu les auras bien digérés il sera temps de revenir à ton projet qui bizarrement avancera.
Encore une fois suis les conseils de Jean-François et ne sautes pas de listing en listing en te disant que le prochain sera le bon.
Je ne sais pas si j'ai trouvé la bonne version mais j'ai trouvé un webswitch.pde sur google.code. Le fichier fait plus de 400 lignes : est-ce bien raisonnable pour quelqu'un qui débute en programmation ?
De plus dans ce fichier il faut personnaliser des constantes : adresse Ip, MAC etc
L'as tu fait ?

Ne jamais faire du coupé/collé des listing que tu trouves sur le net.
Tu ré-écris tout à la main c'est la méthode la plus efficace pour apprendre. En me lisant tu penseras sûrement que c'est une perte de temps mais détrompes toi c'est exactement l'inverse.

Il n'y a pas de recette miracle, à ce que je sache tu n'es pas Bouddha, donc tu ne peux pas recevoir l'illumination assis sous un arbre. Tu n'es qu'un pauvre humain, comme nous tous, et ta seule possibilité est bosser, bosser, bosser.

en faite je ne cherche pas a faire de la programation, sinon je me metterais au livres et je ferais des tests plus poussé. La raison pourquoi je me suis acheter un enc28j60 c'est pour l'unique raison de controler via internet des relais. Je veux simplement un board flexible que je peux entré le nom de ma compagnie et jouer un peu avec l'interface , cela avec des simples boutons marche/arret qui declanche les sorties du board qui eux a leurs tour clancherons des relais. Je ne cherche pas a m'instruire en programation, J'admire ceux qui le font mais moi c'est pas vraiment mon domaine. Soyer pas vexé mais je croyais que j'aurais eu un simple code avec plusieurs bouttons qui controle des sorties, a ce moment la j'aurais simplement testé des leds et j'aurais testé mes relais pour ensuite faire l'installation de ceux ci chez quelques clients qui on faite une demande particulière. Je pensais aussi que ds la librairie il y aurait eu plus d'exemple, la je suis coincé avec un web switch qui controle 1 sortie, j'aurais aimé d'avantage mais bon. Je vais continuer de chercher mais je crois sincerement pas me mettre a étudier de fond en comble le codage de c'est boards, je passeré simplement a du plug and play vendu par une compagnie différente! Merci des conseils. Je sais bien que l'idéal serait d'avancer progressivement mais, ce n'est pas pour mes passe temps l'arduino, c'est pour mon travail !!!

l'offre tien toujours!! Si il y a un callé plus bright que moi qui peux me dénicher un simple websitch avec un maximum de sortie controlé avec les bouttons je serai le plus heureux de ce forum :wink:

si tu veux quelque chose de "fiable" pour ton niveau avec support et sans t'investir trop loin dans la bête vu que c'est pour ton entreprise je passerais plutôt vers ce genre de solution.
http://www.gce-electronics.com/fr/tcp-ip/31-serveur-ip-8-relais-ethernet.html

ouais, si jamais je ne réussis pas a faire marcher ce board je vais passer a cette solution. Mais ce n'est pas flexible come le ENC28J60. La je peux entré des info et personaliser la page.

Alors apprend un minimum.... franchement là je ne te comprends pas.
Certains font ça pour leurs hobby, on est d'accord, mais tu parle d'un solution "personnalisable" que tu veux employer pour ton job.... mais par contre tu ne veux pas investir :sleeping:

Les pommes ne tombent pas toutes coupées dans la plaque à gateaux... faut t'investir un minimum, et le minimum, c'est d'apprendre à coder un peu.

D'autant que le langage utilisé par arduino est vraiment bien supporté.

bon alors je vais essayer, sans allez trop loin dans le sujet, je vais reviser mon code d'exemple webswitch qui control 1 sortie. je vais essaeyer au moins de au moins avoir 2 bouttons de plus sans quil sois fonctionnel. apres je leur vais leurs attriburer une fonction a leurs pins respectives, mais va me falloir un coup de main :grin: comme ca je devrais avoir un minimum de connaissance pour debugguer si il arrive des pépins

comment on fait pour afficher nos code dans des balises ici? sans que ca prenne 1 page au complet

JF tu veux etre mon maitre de cours? XD XD XD

Je ne serai pas ton maitre de cours, c'est largement hors de mes capacités, par contre pour corriger dans la mesure de mes connaissances pas de problème, et d'autres t'aiderons certainement, mais le gros du travail doit avant tout être fournis par toi.
Déjà pour te familiariser avec l'Arduino, son langage et son IDE, commence par cet exercice :

C'est simple, fonctionnel, et ça bouffe pas trop de temps XD

#include "etherShield.h"


// please modify the following two lines. mac and ip have to be unique
// in your local area network. You can not have the same numbers in
// two devices:
static uint8_t mymac[6] = {0x54,0x55,0x58,0x10,0x00,0x24}; 
static uint8_t myip[4] = {192,168,1,15};
static char baseurl[]="http://192.168.1.15/";
static uint16_t mywwwport =80; // listen port for tcp/www (max range 1-254)



#define BUFFER_SIZE 500
static uint8_t buf[BUFFER_SIZE+1];
#define STR_BUFFER_SIZE 22
static char strbuf[STR_BUFFER_SIZE+1];

EtherShield es=EtherShield();

// prepare the webpage by writing the data to the tcp send buffer
uint16_t print_webpage(uint8_t *buf, byte on_off);
int8_t analyse_cmd(char *str);

// LED cathode connects the Pin4, anode to 5V through 1K resistor
#define LED_PIN  4
#define LEDPIN  5


void setup(){
  
   /*initialize enc28j60*/
	 es.ES_enc28j60Init(mymac);
   es.ES_enc28j60clkout(2); // change clkout from 6.25MHz to 12.5MHz
   delay(10);
        
	/* Magjack leds configuration, see enc28j60 datasheet, page 11 */
	// LEDA=greed LEDB=yellow
	//
	// 0x880 is PHLCON LEDB=on, LEDA=on
	// enc28j60PhyWrite(PHLCON,0b0000 1000 1000 00 00);
	es.ES_enc28j60PhyWrite(PHLCON,0x880);
	delay(500);
	//
	// 0x990 is PHLCON LEDB=off, LEDA=off
	// enc28j60PhyWrite(PHLCON,0b0000 1001 1001 00 00);
	es.ES_enc28j60PhyWrite(PHLCON,0x990);
	delay(500);
	//
	// 0x880 is PHLCON LEDB=on, LEDA=on
	// enc28j60PhyWrite(PHLCON,0b0000 1000 1000 00 00);
	es.ES_enc28j60PhyWrite(PHLCON,0x880);
	delay(500);
	//
	// 0x990 is PHLCON LEDB=off, LEDA=off
	// enc28j60PhyWrite(PHLCON,0b0000 1001 1001 00 00);
	es.ES_enc28j60PhyWrite(PHLCON,0x990);
	delay(500);
	//
  // 0x476 is PHLCON LEDA=links status, LEDB=receive/transmit
  // enc28j60PhyWrite(PHLCON,0b0000 0100 0111 01 10);
  es.ES_enc28j60PhyWrite(PHLCON,0x476);
	delay(100);
        
  //init the ethernet/ip layer:
  es.ES_init_ip_arp_udp_tcp(mymac,myip,80);
  
 	pinMode(LED_PIN, OUTPUT); 
 	digitalWrite(LED_PIN, LOW);  // switch on LED
 
 pinMode(LEDPIN, OUTPUT); 
 	digitalWrite(LEDPIN, LOW);  // switch on LED
 
 
 
 
}

void loop(){
  uint16_t plen, dat_p;
  int8_t cmd;
  byte on_off = 1;

  plen = es.ES_enc28j60PacketReceive(BUFFER_SIZE, buf);

	/*plen will ne unequal to zero if there is a valid packet (without crc error) */
  if(plen!=0){
	           
    // arp is broadcast if unknown but a host may also verify the mac address by sending it to a unicast address.
    if(es.ES_eth_type_is_arp_and_my_ip(buf,plen)){
      es.ES_make_arp_answer_from_request(buf);
      return;
    }

    // check if ip packets are for us:
    if(es.ES_eth_type_is_ip_and_my_ip(buf,plen)==0){
      return;
    }
    
    if(buf[IP_PROTO_P]==IP_PROTO_ICMP_V && buf[ICMP_TYPE_P]==ICMP_TYPE_ECHOREQUEST_V){
      es.ES_make_echo_reply_from_request(buf,plen);
      return;
    }
    
    // tcp port www start, compare only the lower byte
    if (buf[IP_PROTO_P]==IP_PROTO_TCP_V&&buf[TCP_DST_PORT_H_P]==0&&buf[TCP_DST_PORT_L_P]==mywwwport){
      if (buf[TCP_FLAGS_P] & TCP_FLAGS_SYN_V){
         es.ES_make_tcp_synack_from_syn(buf); // make_tcp_synack_from_syn does already send the syn,ack
         return;     
      }
      if (buf[TCP_FLAGS_P] & TCP_FLAGS_ACK_V){
        es.ES_init_len_info(buf); // init some data structures
        dat_p=es.ES_get_tcp_data_pointer();
        if (dat_p==0){ // we can possibly have no data, just ack:
          if (buf[TCP_FLAGS_P] & TCP_FLAGS_FIN_V){
            es.ES_make_tcp_ack_from_any(buf);
          }
          return;
        }
        if (strncmp("GET ",(char *)&(buf[dat_p]),4)!=0){
          	// head, post and other methods for possible status codes see:
            // http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
            plen=es.ES_fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n<h1>200 OK</h1>"));
            goto SENDTCP;
        }
 	if (strncmp("/ ",(char *)&(buf[dat_p+4]),2)==0){
                plen=print_webpage(buf, on_off);
            goto SENDTCP;
         }
        cmd=analyse_cmd((char *)&(buf[dat_p+5]));
        
        if (cmd==2){
                on_off=1;
        	digitalWrite(LED_PIN, LOW);  // switch on LED
        
        }
          if (cmd==2){
                on_off=1;
        	digitalWrite(LEDPIN, LOW);  // switch on LED
        
        
        }
        else if (cmd==3){
                on_off=0;
        	digitalWrite(LED_PIN, HIGH);  // switch off LED
        
        
         }
        else if (cmd==3){
                on_off=0;
        	digitalWrite(LEDPIN, HIGH);  // switch off LED
        
        
        
        }
        plen=print_webpage(buf, on_off);
        	
        	   plen=print_webpage(buf, on_off);
SENDTCP:  es.ES_make_tcp_ack_from_any(buf); // send ack for http get
           es.ES_make_tcp_ack_with_data(buf,plen); // send data       
      }
    }
  }
        
}
// The returned value is stored in the global var strbuf
uint8_t find_key_val(char *str,char *key)
{
        uint8_t found=0;
        uint8_t i=0;
        char *kp;
        kp=key;
        while(*str &&  *str!=' ' && found==0){
                if (*str == *kp){
                        kp++;
                        if (*kp == '\0'){
                                str++;
                                kp=key;
                                if (*str == '='){
                                        found=1;
                                }
                        }
                }else{
                        kp=key;
                }
                str++;
        }
        if (found==1){
                // copy the value to a buffer and terminate it with '\0'
                while(*str &&  *str!=' ' && *str!='&' && i<STR_BUFFER_SIZE){
                        strbuf[i]=*str;
                        i++;
                        str++;
                }
                strbuf[i]='\0';
        }
        return(found);
}

int8_t analyse_cmd(char *str)
{
        int8_t r=-1;
     
        if (find_key_val(str,"cmd")){
                if (*strbuf < 0x3a && *strbuf > 0x2f){
                        // is a ASCII number, return it
                        r=(*strbuf-0x30);
                }
        }
        return r;
}


uint16_t print_webpage(uint8_t *buf, byte on_off)
{

       int i=0;
    
        
        uint16_t plen;
        
 
        
        plen=es.ES_fill_tcp_data_p(buf,0,PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n"));
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<center><p><h1>Test 2 pins 2 bouttons 2 leds </h1></p> "));
         
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<hr>
<form METHOD=get action=\""));
        
        plen=es.ES_fill_tcp_data(buf,plen,baseurl);
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("\">"));
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<h2> ETAT DU MOTEUR  </h2> "));
 				plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<h1><font color=\"#00FF00\"> "));
         
        if(on_off)
        	plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("PRESENTEMENT = ACTIVE"));
        else 
        	plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("PRESENTEMENT = DESACTIVE"));
        
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("  </font></h1>
 ") );
        
        if(on_off){
        	plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=3>"));
        	plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Mettre hors service\"></form>"));
        }
        else {
        	plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd value=2>"));
        	plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Mettre en marche\"></form>"));
        }
        
        
        
        
         if(on_off){
        	plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd1 value=3>"));
        	plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Mettre hors service\"></form>"));
        }
        else {
        	plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=hidden name=cmd1 value=2>"));
        	plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("<input type=submit value=\"Mettre en marche\"></form>"));
        }
        
        
        
        
        
        
        plen=es.ES_fill_tcp_data_p(buf,plen,PSTR("</center><hr> <p> V1.0 <a href=\"www.google.com<a>"));
  
        return(plen);
}

désolé on fais comment pour mettre en balize ?