Denne tråd er over 6 måneder gammel
Er du sikker på, at du har noget relevant at tilføje?
Hjælp til ArduinoAf Ultrabruger DeathVenom | 09-01-2017 18:45 | 1822 visninger | 20 svar, hop til seneste
Hej,
Jeg søger lidt hjælp til noget arduino. Er totalt nybegynder. Er ved at forsøge at anvende en RFID chip som on/of til en led. Har fået RFIDen til at virke, men ved ikke hvordan man slår LEDen til/fra under samme If kommando. Er der noget der hedder toggle? Såsom digitalWrite(LedPin, TOGGLE);
Istedet for High/Low?
På forhånd tak
Vh
Kasper --
Intel i7-3930K CPU, Aseteck liquid cooling, Evga Nvidia Gtx 780 Classified ACX, 875w PSU, 20GB 1600mhz RAM, Samsung 256GB EVO SSD, Seagate 1TB HDD, --
Sidst redigeret 09-01-2017 18:48
Må vi se noget kode?
Umiddelbart så skal du bare bruge digitalWrite(LedPin, 0) og Ledpin, 1. -- Forsøger med noget digitaltoggle lige nu, men intet virker. Har prøvet at markere det jeg bøvler med lige nu.
#include <MFRC522.h>
#include <SPI.h> // Used for communication via SPI with the Module
// WS2812 RGB Stick connection
#define SDAPIN 10 // RFID Module SDA Pin is connected to the UNO 10 Pin
#define RESETPIN 8 // RFID Module RST Pin is connected to the UNO 8 Pin
#include <DigitalToggle.h>
#define LedPin 7
byte FoundTag; // Variable used to check if Tag was found
byte ReadTag; // Variable used to store anti-collision value to read Tag information
byte TagData[MAX_LEN]; // Variable used to store Full Tag Data
byte TagSerialNumber[5]; // Variable used to store only Tag Serial Number
byte GoodTagSerialNumber[5] = {0x76, 0xD6, 0x12, 0x7E}; // The Tag Serial number we are looking for
MFRC522 nfc(SDAPIN, RESETPIN); // Init of the library using the UNO pins declared above
void setup() {
pinMode(LedPin, OUTPUT);
SPI.begin();
Serial.begin(115200);
// Start to find an RFID Module
Serial.println("Looking for RFID Reader");
nfc.begin();
byte version = nfc.getFirmwareVersion(); // Variable to store Firmware version of the Module
// If can't find an RFID Module
if (! version) {
Serial.print("Didn't find RC522 board.");
while(1); //Wait until a RFID Module is found
}
// If found, print the information about the RFID Module
Serial.print("Found chip RC522 ");
Serial.print("Firmware version: 0x");
Serial.println(version, HEX);
Serial.println();
}
void loop() {
String GoodTag="False"; // Variable used to confirm good Tag Detected
// Check to see if a Tag was detected
// If yes, then the variable FoundTag will contain "MI_OK"
FoundTag = nfc.requestTag(MF1_REQIDL, TagData);
if (FoundTag == MI_OK) {
delay(200);
// Get anti-collision value to properly read information from the Tag
ReadTag = nfc.antiCollision(TagData);
memcpy(TagSerialNumber, TagData, 4); // Write the Tag information in the TagSerialNumber variable
Serial.println("Tag detected.");
Serial.print("Serial Number: ");
for (int i = 0; i < 4; i++) { // Loop to print serial number to serial monitor
Serial.print(TagSerialNumber[i], HEX);
Serial.print(", ");
}
Serial.println("");
Serial.println();
// Check if detected Tag has the right Serial number we are looking for
for(int i=0; i < 4; i++){
if (GoodTagSerialNumber[i] != TagSerialNumber[i]) {
break; // if not equal, then break out of the "for" loop
}
if (i == 3) { // if we made it to 4 loops then the Tag Serial numbers are matching
GoodTag="TRUE";
}
}
if (GoodTag == "TRUE"){
Serial.println("Success!!!!!!!");
Serial.println();
void toggle_led() {
digitalToggle(LedPin);
}
-- Intel i7-3930K CPU, Aseteck liquid cooling, Evga Nvidia Gtx 780 Classified ACX, 875w PSU, 20GB 1600mhz RAM, Samsung 256GB EVO SSD, Seagate 1TB HDD, det ser ud til at du bare skal ændre
den sidste markerede blok til at være
if (GoodTag == "TRUE"){
Serial.println("Success!!!!!!!");
Serial.println();
digitalToggle(LedPin);
}}}
OBS: du havde glemt at lukke din if sætning, og din loop funktion!
Derved de sidste 2*}}
Benyt gerne pastebin til kode:
http://pastebin.com[...]
Så bliver det en del pænere og mere overskueligt. -- Overclocked Haswell-Pascal Inside! --
Sidst redigeret 09-01-2017 19:47 Der mangler da lige et par } og hvorfor har du lavet en funktion toggle_led midt i koden?
Skriver den linjen med "Success.." ud i konsollen?
-- Hmm. Nu skriver den: Error compiling for board Arduino/Genuino Uno.
#include <DigitalToggle.h>
#include <MFRC522.h>
#include <SPI.h> // Used for communication via SPI with the Module
// WS2812 RGB Stick connection
#define LedPin 7 // Pin 5 connected to DIN of RGB Stick
#define SDAPIN 10 // RFID Module SDA Pin is connected to the UNO 10 Pin
#define RESETPIN 8 // RFID Module RST Pin is connected to the UNO 8 Pin
byte FoundTag; // Variable used to check if Tag was found
byte ReadTag; // Variable used to store anti-collision value to read Tag information
byte TagData[MAX_LEN]; // Variable used to store Full Tag Data
byte TagSerialNumber[5]; // Variable used to store only Tag Serial Number
byte GoodTagSerialNumber[5] = {0x76, 0xD6, 0x12, 0x7E}; // The Tag Serial number we are looking for
MFRC522 nfc(SDAPIN, RESETPIN); // Init of the library using the UNO pins declared above
void setup() {
pinMode(LedPin, OUTPUT);
digitalWrite(LedPin, LOW);
SPI.begin();
Serial.begin(115200);
// Start to find an RFID Module
Serial.println("Looking for RFID Reader");
nfc.begin();
byte version = nfc.getFirmwareVersion(); // Variable to store Firmware version of the Module
// If can't find an RFID Module
if (! version) {
Serial.print("Didn't find RC522 board.");
while(1); //Wait until a RFID Module is found
}
// If found, print the information about the RFID Module
Serial.print("Found chip RC522 ");
Serial.print("Firmware version: 0x");
Serial.println(version, HEX);
Serial.println();
}
void loop() {
String GoodTag="False"; // Variable used to confirm good Tag Detected
// Check to see if a Tag was detected
// If yes, then the variable FoundTag will contain "MI_OK"
FoundTag = nfc.requestTag(MF1_REQIDL, TagData);
if (FoundTag == MI_OK) {
delay(200);
// Get anti-collision value to properly read information from the Tag
ReadTag = nfc.antiCollision(TagData);
memcpy(TagSerialNumber, TagData, 4); // Write the Tag information in the TagSerialNumber variable
Serial.println("Tag detected.");
Serial.print("Serial Number: ");
for (int i = 0; i < 4; i++) { // Loop to print serial number to serial monitor
Serial.print(TagSerialNumber[i], HEX);
Serial.print(", ");
}
Serial.println("");
Serial.println();
// Check if detected Tag has the right Serial number we are looking for
for(int i=0; i < 4; i++){
if (GoodTagSerialNumber[i] != TagSerialNumber[i]) {
break; // if not equal, then break out of the "for" loop
}
if (i == 3) { // if we made it to 4 loops then the Tag Serial numbers are matching
GoodTag="TRUE";
}
}
if (GoodTag == "TRUE"){
Serial.println("Success!!!!!!!");
Serial.println();
digitalToggle(LedPin);
}}} -- Intel i7-3930K CPU, Aseteck liquid cooling, Evga Nvidia Gtx 780 Classified ACX, 875w PSU, 20GB 1600mhz RAM, Samsung 256GB EVO SSD, Seagate 1TB HDD, Der stod også dette: *portInputRegister(digitalPinToPort(P)) = digitalPinToBitMask(P); -- Intel i7-3930K CPU, Aseteck liquid cooling, Evga Nvidia Gtx 780 Classified ACX, 875w PSU, 20GB 1600mhz RAM, Samsung 256GB EVO SSD, Seagate 1TB HDD, Det med SUCCES er bare fordi en del af koden er lånt andetsteds fra hvor han havde en lille skørm tilsluttet :) -- Intel i7-3930K CPU, Aseteck liquid cooling, Evga Nvidia Gtx 780 Classified ACX, 875w PSU, 20GB 1600mhz RAM, Samsung 256GB EVO SSD, Seagate 1TB HDD, Hvor har du den kode fra?
Hvilken version af MFRC522-biblioteket bruger du?
-- Koden er herfra: https://brainy-bits.com[...]
Bare uden alle de LEDer og buzzeren. Mit er bare med en "simpel" on/off led. MFRC522 biblioteket står under "The code" i linket. -- Intel i7-3930K CPU, Aseteck liquid cooling, Evga Nvidia Gtx 780 Classified ACX, 875w PSU, 20GB 1600mhz RAM, Samsung 256GB EVO SSD, Seagate 1TB HDD, Din digitalToggle.h skal se sådan ud, http://pastebin.com[...]
#include <pins_arduino.h>
skal væk og
#include "Arduino.h"
skal bruges i stedet for
-- Tak :) Hvor skal det stå? -- Intel i7-3930K CPU, Aseteck liquid cooling, Evga Nvidia Gtx 780 Classified ACX, 875w PSU, 20GB 1600mhz RAM, Samsung 256GB EVO SSD, Seagate 1TB HDD, Find filen "DigitalToggle.h"
og udskift den linje som hedder #include <pins_arduino.h> og udskift den med #include "Arduino.h"
Gem filen og recompiler dit program.
#include <pins_arduino.h> -- Sidst redigeret 09-01-2017 20:36 Du aner ikke hvor meget jeg har bævlet med det her! TUSINDE TAK!!!! :) -- Intel i7-3930K CPU, Aseteck liquid cooling, Evga Nvidia Gtx 780 Classified ACX, 875w PSU, 20GB 1600mhz RAM, Samsung 256GB EVO SSD, Seagate 1TB HDD, #13 Du siger bare til en anden gang :-) -- Et spørgsmål på farten :) Hvis jeg nu skal bruge led'ens high/low status og referere til den som feks:
if (LedPin == HIGH) {
Så et eller andet
Synes ikke jeg kan bruge den sådan. Er det fordi at det et output? Hvad kan jeg gøre?
På forhånd tak -- Intel i7-3930K CPU, Aseteck liquid cooling, Evga Nvidia Gtx 780 Classified ACX, 875w PSU, 20GB 1600mhz RAM, Samsung 256GB EVO SSD, Seagate 1TB HDD, B :) -- Intel i7-3930K CPU, Aseteck liquid cooling, Evga Nvidia Gtx 780 Classified ACX, 875w PSU, 20GB 1600mhz RAM, Samsung 256GB EVO SSD, Seagate 1TB HDD, #15 så skal du ikke bruge DigitalToggle :-D den bruges kun hvis du ikke har brug for at holde styr på om den er tændt eller slukket men kun vil skifte tilstand.
Brug i stedet for en variable som enten er 1 (High) eller 0 (low) og sæt den som du nu har brug for.
Brug så digitalWrite(pinled, din variable) til at tænde og slukke for din led.
-- Men kan man lave et system så det fungerer ligesom digital toggle? samme chip skal kunne tænde/slukke for leden. Hvor leden symboliserer noget mere. -- Intel i7-3930K CPU, Aseteck liquid cooling, Evga Nvidia Gtx 780 Classified ACX, 875w PSU, 20GB 1600mhz RAM, Samsung 256GB EVO SSD, Seagate 1TB HDD, Eller er der måske en måde at aflæse statussen på leden på? :)
-- Intel i7-3930K CPU, Aseteck liquid cooling, Evga Nvidia Gtx 780 Classified ACX, 875w PSU, 20GB 1600mhz RAM, Samsung 256GB EVO SSD, Seagate 1TB HDD, #19 Du laver det som en variable som du kan aflæse. Se
http://pastebin.com[...]
hvor du kan bruge variablen onOff som du nu har lyst til. Den er enten 0 eller 1. --
Grundet øget spam aktivitet fra gæstebrugere, er det desværre ikke længere muligt, at oprette svar som gæst.
Hvis du ønsker at deltage i debatten, skal du oprette en brugerprofil.
Opret bruger | Login
|
Du skal være logget ind for at tilmelde dig nyhedsbrev.
Hvilken udbyder har du til internet? 424 personer har stemt - Mit energiselskab (Ewii f.eks) 11%
|