versão 1
( case 0 ) ID: 0x8CC983A7 | Dados: FF 5F FF FF FF FF FF FF
(case 1) ID: 0x8CC983A7 | Dados: FF 1F FF FF FF FF FF FF
( case 2 ) ID: 0x8CC980A7 | Dados: FF 5F FF FF FF FF FF FF
01 #include <SPI.h>
02 #include <mcp2515.h>
03 struct can_frame canMsg;
04 MCP2515 mcp2515(10);
05
06 byte etapa = 0;
07
08 bool enviar = false;
09 bool lerCAN = true;
10
11 void setup() {
12 Serial.begin(115200);
13 SPI.begin();
14
15 mcp2515.reset();
16 mcp2515.setBitrate(CAN_250KBPS , MCP_8MHZ);
17 mcp2515.setNormalMode();
18
19 canMsg.can_id = 0x8CC991A7;
20 canMsg.can_dlc = 8;
21
22 Serial.println("Comandos:");
23 Serial.println("1 = Enviar ON");
24 Serial.println("0 = Enviar OFF");
25 Serial.println("r = Ler CAN ON");
26 Serial.println("p = Ler CAN OFF");
27 }
28
29 void loop() {
30
31 // 🔹 Controle via Serial
32 if (Serial.available()) {
33 char comando = Serial.read();
34
35 if (comando == '1') {
36 enviar = true;
37 Serial.println("Envio ATIVADO");
38 }
40
41 if (comando == '0') {
42 enviar = false;
43 Serial.println("Envio PARADO");
44 }
45
46 if (comando == 'r') {
47 lerCAN = true;
48 Serial.println("Leitura CAN ATIVADA");
49 }
50
51 if (comando == 'p') {
52 lerCAN = false;
53 Serial.println("Leitura CAN PARADA");
54 }
55 }
56
57 // 🔹 ENVIO CAN
58 if (enviar) {
59
60 switch (etapa) {
61
62 case 0:
67 canMsg.data[0] = 0xFF;
68 canMsg.data[1] = 0x5F;
69 canMsg.data[2] = 0xFF;
70 canMsg.data[3] = 0xFF;
71 canMsg.data[4] = 0xFE;
72 canMsg.data[5] = 0xFF;
73 canMsg.data[6] = 0xFF;
74 canMsg.data[7] = 0xFF;
75 break;
76
77 case 1:
78 canMsg.data[0] = 0xFF;
79 canMsg.data[1] = 0x1F;
80 canMsg.data[2] = 0xFF;
81 canMsg.data[3] = 0xFF;
82 canMsg.data[4] = 0xFF;
83 canMsg.data[5] = 0xFF;
84 canMsg.data[6] = 0xFF;
85 canMsg.data[7] = 0xFF;
86 break;
87
88 case 2:
89 canMsg.data[0] = 0xFF;
90 canMsg.data[1] = 0x5F;
91 canMsg.data[2] = 0xFF;
92 canMsg.data[3] = 0xFF;
93 canMsg.data[4] = 0xFF;
94 canMsg.data[5] = 0xFF;
95 canMsg.data[6] = 0xFF;
96 canMsg.data[7] = 0xFF;
97 break;
98
99 case 3:
100 canMsg.data[0] = 0xFF;
101 canMsg.data[1] = 0xFF;
102 canMsg.data[2] = 0xFF;
103 canMsg.data[3] = 0xFF;
104 canMsg.data[4] = 0xFF;
105 canMsg.data[5] = 0xFF;
106 canMsg.data[6] = 0xFF;
107 canMsg.data[7] = 0xFF;
108 break;
109
110 case 4:
111 canMsg.data[0] = 0xFF;
112 canMsg.data[1] = 0xFF;
113 canMsg.data[2] = 0xFF;
114 canMsg.data[3] = 0xFF;
115 canMsg.data[4] = 0xFF;
116 canMsg.data[5] = 0xFF;
117 canMsg.data[6] = 0xFF;
118 canMsg.data[7] = 0xFF;
119 break;
120
121 case 5:
122 canMsg.data[0] = 0xFF;
123 canMsg.data[1] = 0xFF;
124 canMsg.data[2] = 0xFF;
125 canMsg.data[3] = 0xFF;
126 canMsg.data[4] = 0xFF;
127 canMsg.data[5] = 0xFF;
128 canMsg.data[6] = 0xFF;
129 canMsg.data[7] = 0xFF;
130 break;
131 }
132
133 mcp2515.sendMessage(&canMsg);
134
135 etapa++;
136 if (etapa > 5) etapa = 0;
137
138 delay(60);
139 }
140
141 // 🔹 LEITURA CAN
142 if (lerCAN) {
143
144 if (mcp2515.readMessage(&canMsg) == MCP2515::ERROR_OK) {
145
146 Serial.print("ID: 0x");
147 Serial.print(canMsg.can_id, HEX);
148 Serial.print("| Dados: ");
149
150 for (int i = 0; i < canMsg.can_dlc; i++) {
151 if (canMsg.data[i] < 0x10) Serial.print("0");
152 Serial.print(canMsg.data[i], HEX);
153 Serial.print(" ");
154 }
155
156 Serial.println();
157 }
158 }
159 }
Esses são os comandos que reseta o modo
( case 0 ) ID: 0x8CC983A7 | Dados: FF 5F FF FF FF FF FF FF
(case 1) ID: 0x8CC983A7 | Dados: FF 1F FF FF FF FF FF FF
( case 2 ) ID: 0x8CC980A7 | Dados: FF 5F FF FF FF FF FF FF
Esses são as leituras que tivemos tomando programado e quando ele ficou virgem
1| ID: 0x8CC5FF83 | Dados: 00 7D FF FF FF FF FF FF = vezes 5
2| ID: 0x8CC5FF83 | Dados: 00 7D FF FF FF FF FF FF = vezes 5
3| ID: 0x8CC4FF83 | Dados: 58 10 01 05 FF FF FF FF = vezes 2
4| ID: 0x8CC980A7 | Dados: FF 0F FF FF FF FF FF FF = vezes 8
5| ID: 0x8CC983A7 | Dados: FF 0F FF FF FF FF FF FF = vezes 8
6| ID: 0x8CC9A783 | Dados: FF FF FF F0 FF FF FF FF = vezes 2
7| ID: 0x8DC9A783 | Dados: FF FF FF FF FF 3F FF FF = vezes 2
8| ID: 0x8CC5FF83 | Dados: 00 7D FF FF FF FF FF FF = vezes 5
9| ID: 0x8CC5FF83 | Dados: 00 7D FF FF FF FF FF FF = vezes 5
10| ID: 0x8CC980A7 | Dados: FF 0F FF FF FF FF FF FF = vezes 8
11| ID: 0x8CC983A7 | Dados: FF 0F FF FF FF FF FF FF = vezes 8
12| ID: 0x8CC9A783 | Dados: FF FF FF F0 FF FF FF FF = vezes 2
13| ID: 0x8DC9A783 | Dados: FF FF FF FF FF 3F FF FF = vezes 2
14| ID: 0x8CC5FF83 | Dados: 00 7D FF FF FF FF FF FF = vezes 5
15| ID: 0x8CC4FF83 | Dados: 58 10 01 05 FF FF FF FF = vezes 2
16| ID: 0x8CC983A7 | Dados: FF 5F FF FF FF FF FF FF = vezes 1
17| ID: 0x8CC983A7 | Dados: FF 1F FF FF FF FF FF FF = vezes 1
18| ID: 0x8CC980A7 | Dados: FF 5F FF FF FF FF FF FF = vezes 1
19| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
20| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
21| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
22| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
23| ID: 0x8CC980A7 | Dados: FF 0F FF FF FF FF FF FF = vezes 8
24| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
25| ID: 0x8CC983A7 | Dados: FF 0F FF FF FF FF FF FF = vezes 8
26| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
27| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
28| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
29| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
30| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
31| ID: 0x8CC980A7 | Dados: FF 0F FF FF FF FF FF FF = vezes 8
32| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
33| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
34| ID: 0x8CC983A7 | Dados: FF 0F FF FF FF FF FF FF = vezes 8
35| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
36| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
37| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
38| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
39| ID: 0x8CC980A7 | Dados: FF 0F FF FF FF FF FF FF = vezes 8
40| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
41| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
42| ID: 0x8CC983A7 | Dados: FF 0F FF FF FF FF FF FF = vezes 8
43| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
44| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
45| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
46| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
47| ID: 0x8CC980A7 | Dados: FF 0F FF FF FF FF FF FF = vezes 8
48| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
49| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
50| ID: 0x8CC983A7 | Dados: FF 0F FF FF FF FF FF FF = vezes 8
51| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
52| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
53| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
54| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
55| ID: 0x8CC980A7 | Dados: FF 0F FF FF FF FF FF FF = vezes 8
56| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
57| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
58| ID: 0x8CC983A7 | Dados: FF 0F FF FF FF FF FF FF = vezes 8
59| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
60| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
61| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
62| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
63| ID: 0x8CC980A7 | Dados: FF 0F FF FF FF FF FF FF = vezes 8
64| ID: 0x8CC9A780 | Dados: FF FF FF F0 FF FF FF FF = vezes 18
65| ID: 0x8DC9A780 | Dados: FF FF FF FF FF 3F FF FF = vezes 18
66| ID: 0x8CC983A7 | Dados: FF 0F FF FF FF FF FF FF = vezes 8