Components and supplies
Resistor 10k ohm
Shift Register- Serial to Parallel
Arduino UNO
Apps and platforms
Arduino IDE
Project description
Code
Cable Tester Code
arduino
1/* 2 3 Tester per cavi ethernet 4 5 Andrea Berri 6 7 2016 8 9 */ 10 11//Librerie 12 13 14 #include <LiquidCrystal.h> 15 16// inizializzo e assegno porte LCD 17 18LiquidCrystal lcd( 4, 5, 6, 7, 8, 9); 19 20// abilito pin per pilotare IC74HC595 21 22int latchPin = 12; 23 24int clockPin = 11; 25 26int dataPin = 13; 27 28byte pinOut = 0; // da modificare 29 30int uscita = 0; // da modificare 31 32int Lo1 = 0; 33 34int Lo2 = 0; 35 36int Lo3 = 0; 37 38int Lo4 = 0; 39 40int Lo5 = 0; 41 42int Lo6 = 0; 43 44int Lo7 = 0; 45 46int Lo8 = 0; 47 48int cavo = 0; 49 50int eth1 = 0; 51 52int eth2 = 0; 53 54int eth3 = 0; 55 56int eth4 = 0; 57 58int eth5 = 0; 59 60int eth6 = 0; 61 62int eth7 = 0; 63 64int eth8 = 0; 65 66int testeth1 = 0; 67 68int verifi1 = 0; 69 70 71 72 //Assegno variabili alle porte 73 74int ethIn1 = 14; 75 76int ethIn2 = 15; 77 78int ethIn3 = 16; 79 80int ethIn4 = 17; 81 82int ethIn5 = 18; 83 84int ethIn6 = 19; 85 86int ethIn7 = 2; 87 88int ethIn8 = 3; 89 90 91 92 void setup() { 93 94 lcd.begin(16,2); 95 96 lcd.setCursor(0,0); 97 98 lcd.print("Progetto Tester"); 99 100 lcd.setCursor(4,1); 101 102 lcd.print("Ethernet"); 103 104 delay(3000); 105 106 lcd.clear(); 107 108 Serial.begin(9600); 109 110 111 112 //configuro uscita IC 113 114 pinMode(latchPin, OUTPUT); 115 116 pinMode(dataPin, OUTPUT); 117 118 pinMode(clockPin, OUTPUT); 119 120 121 pinOut = 0; 122 123 124 //Assegno gli stati alle porte 125 126 127 pinMode(ethIn1, INPUT); 128 129 pinMode(ethIn2, INPUT); 130 131 pinMode(ethIn3, INPUT); 132 133 pinMode(ethIn4, INPUT); 134 135 pinMode(ethIn5, INPUT); 136 137 pinMode(ethIn6, INPUT); 138 139 pinMode(ethIn7, INPUT); 140 141 pinMode(ethIn8, INPUT); 142 143 144 145 146 } 147 148 149 void loop() { 150 151 152 Serial.print("---------------INIZIO----------------"); 153 154 cavo = 0; 155 156 Lo1 = 0; 157 158 Lo2 = 0; 159 160 Lo3 = 0; 161 162 Lo4 = 0; 163 164 Lo5 = 0; 165 166 Lo6 = 0; 167 168 Lo7 = 0; 169 170 Lo8 = 0; 171 172 lcd.clear(); 173 174 lcd.print("Processo: "); 175 176 lcd.setCursor(0,1); 177 178 //inserisco ciclo 179 180 for (int uscita=0; uscita<= 7; uscita++){ 181 182 183 184 Serial.println(); 185 186 Serial.print("Pin uscita: "); 187 188 Serial.print(uscita); 189 190 191 192 //lcd.begin(16, 2); 193 194 lcd.print(uscita + 1); 195 196 pinOut = 0; 197 198 199 bitSet(pinOut, uscita); 200 201 digitalWrite(latchPin, LOW); 202 203 shiftOut(dataPin, clockPin, LSBFIRST, pinOut); 204 205 digitalWrite(latchPin, HIGH); 206 207 208 209 210 //leggo stato entrata ethIn1 211 212 int eth1 = digitalRead(ethIn1); 213 214 int eth2 = digitalRead(ethIn2); 215 216 int eth3 = digitalRead(ethIn3); 217 218 int eth4 = digitalRead(ethIn4); 219 220 int eth5 = digitalRead(ethIn5); 221 222 int eth6 = digitalRead(ethIn6); 223 224 int eth7 = digitalRead(ethIn7); 225 226 int eth8 = digitalRead(ethIn8); 227 228 int testeth1 = analogRead(ethIn1); 229 230 231 232 //inserisco verifica 233 234 235 if (uscita == 0 && eth1 == 1) 236 237 { 238 239 Lo1 = 1; 240 241 } 242 243 else 244 245 { 246 247 if (uscita == 0 && eth3 == 1) // se incrociato cambia valore 248 249 {Lo1 = 256 ; 250 251 } 252 253 } 254 255 256 257 258 259 if (uscita == 1 && eth2 == 1) 260 261 { 262 263 Lo2 = 2 ; 264 265 } 266 267 else 268 269 { 270 271 if (uscita == 1 && eth6 == 1) // se incrociato cambia valore 272 273 {Lo2 = 512 ; 274 275 } 276 277 } 278 279 280 281 282 283 if (uscita == 2 && eth3 == 1) 284 285 { 286 287 Lo3 = 4 ; 288 289 } 290 291 else 292 293 { 294 295 if (uscita == 2 && eth1 == 1) // se incrociato cambia valore 296 297 {Lo4 = 1024 ; 298 299 } 300 301 } 302 303 304 305 306 307 if (uscita == 3 && eth4 == 1) 308 309 { 310 311 Lo4 = 8 ; 312 313 } 314 315 else 316 317 { 318 319 320 321 } 322 323 324 325 326 327 if (uscita == 4 && eth5 == 1) 328 329 { 330 331 Lo5 = 16; 332 333 } 334 335 else 336 337 { 338 339 340 341 } 342 343 344 345 346 347 if (uscita == 5 && eth6 == 1) 348 349 { 350 351 Lo6 = 32; 352 353 } 354 355 else 356 357 { 358 359 if (uscita == 5 && eth2 == 1) // se incrociato cambia valore 360 361 {Lo6 = 2024 ; 362 363 } 364 365 } 366 367 368 369 370 371 if (uscita == 6 && eth7 == 1) 372 373 { 374 375 Lo7 = 64; 376 377 } 378 379 else 380 381 { 382 383 384 385 } 386 387 388 389 390 391 if (uscita == 7 && eth8 == 1) 392 393 { 394 395 Lo8 = 128; 396 397 } 398 399 else 400 401 { 402 403 404 405 } 406 407 Serial.println(); 408 409 Serial.print("Stato lettura porte: "); 410 411 Serial.print(eth1); 412 413 Serial.print(eth2); 414 415 Serial.print(eth3); 416 417 Serial.print(eth4); 418 419 Serial.print(eth5); 420 421 Serial.print(eth6); 422 423 Serial.print(eth7); 424 425 Serial.print(eth8); 426 427 428 429 430 431 cavo = Lo1 + Lo2 + Lo3 + Lo4 + Lo5 + Lo6 + Lo7 + Lo8 ; 432 433 Serial.println(); 434 435 Serial.print("Somma valori riscontrati: "); 436 437 Serial.print(cavo); 438 439 } 440 441 442 443 444 445 446 447 448 449 450 451 452 453 if ( cavo == 255 ) 454 455 { 456 457 lcd.clear(); 458 459 lcd.print("cavo dritto ok"); 460 461 delay(2000); 462 463 464 465 } 466 467 else 468 469 { 470 471 if (cavo == 3008 ) 472 473 { 474 475 lcd.clear(); 476 477 lcd.print("cavo inc. ok"); 478 479 delay(2000); 480 481 } 482 483 else 484 485 { 486 487 lcd.clear(); 488 489 lcd.print("Cavo diverso"); 490 491 lcd.setCursor(0,1); 492 493 lcd.print("o difettoso"); 494 495 496 497 delay(1000); 498 499 lcd.clear(); 500 501 if ( cavo == 2496 ) 502 503 { 504 505 lcd.print("Pin 2 / 6 "); 506 507 delay(2000); 508 509 } 510 511 else 512 513 { 514 515 516 517 } 518 519 520 } 521 522 } 523 524 // insserisco sistema verifica pin per eventuale errore 525 526 //inserisco ciclo 527 528 529 530 531 lcd.print("Inizio verifica"); 532 533 delay(1000); 534 535 lcd.clear(); 536 537 lcd.print("out: "); 538 539 lcd.setCursor(0,1); 540 541 lcd.print("in : "); 542 543 uscita = 0; 544 545 for (int uscita=0; uscita<= 7; uscita++){ 546 547 delay(250); 548 549 550 551 552 553 pinOut = 0; 554 555 bitSet(pinOut, uscita); 556 557 digitalWrite(latchPin, LOW); 558 559 shiftOut(dataPin, clockPin, LSBFIRST, pinOut); 560 561 digitalWrite(latchPin, HIGH); 562 563 //leggo stato entrata ethIn1 564 565 int eth1 = digitalRead(ethIn1); 566 567 int eth2 = digitalRead(ethIn2); 568 569 int eth3 = digitalRead(ethIn3); 570 571 int eth4 = digitalRead(ethIn4); 572 573 int eth5 = digitalRead(ethIn5); 574 575 int eth6 = digitalRead(ethIn6); 576 577 int eth7 = digitalRead(ethIn7); 578 579 int eth8 = digitalRead(ethIn8); 580 581 582 //invio info al seriale stato porte 583 584 Serial.println(); 585 586 Serial.print("Stato lettura porte verifica finale: "); 587 588 Serial.print(eth1); 589 590 Serial.print(eth2); 591 592 Serial.print(eth3); 593 594 Serial.print(eth4); 595 596 Serial.print(eth5); 597 598 Serial.print(eth6); 599 600 Serial.print(eth7); 601 602 Serial.print(eth8); 603 604 605 606 //inserisco verifica porta1 607 608 609 if (eth1 == 1) 610 611 { 612 613 verifi1 = 1; 614 615 } 616 617 else 618 619 { 620 621 if (eth2 == 1) 622 623 {verifi1 = 2; 624 625 } 626 627 else 628 629 { 630 631 if (eth3 == 1) 632 633 {verifi1 = 3; 634 635 } 636 637 else 638 639 { 640 641 if (eth4 == 1) 642 643 {verifi1 = 4; 644 645 } 646 647 else 648 649 { 650 651 if (eth5 == 1) 652 653 {verifi1 = 5; 654 655 } 656 657 else 658 659 { 660 661 if (eth6 == 1) 662 663 {verifi1 = 6; 664 665 } 666 667 else 668 669 { 670 671 if (eth7 == 1) 672 673 {verifi1 = 7; 674 675 } 676 677 else 678 679 { 680 681 if (eth8 == 1) 682 683 {verifi1 = 8; 684 685 } 686 687 else 688 689 { 690 691 } 692 693 } 694 695 } 696 697 } 698 699 } 700 701 } 702 703 } 704 705 } 706 707 708 709 710 711 712 713 //lcd.print("Errore: "); 714 715 716 717 lcd.setCursor(uscita+5,0); 718 719 720 721 lcd.print(uscita+1); 722 723 lcd.setCursor(uscita+5,1); 724 725 726 727 lcd.print(verifi1); 728 729 //delay(250); 730 731 verifi1 = 0; 732 733 //fine verifica errori 734 735 } 736 737 delay(2000); 738 739 // } 740 741 //} 742 743 //} 744 745} 746
Downloadable files
Schematic Tester cable
Schematic Tester cable
Schematics
Schematics
Schematic Tester cable
Schematic Tester cable
Schematics
Schematics
Comments
Only logged in users can leave comments