Gå til innhold

Den store Arduino tråden, v2.0


Anbefalte innlegg

Videoannonse
Annonse
Kan dele min nylige erfaring med noen rimelige display moduler, som er lett tilgengelig.



Disse fungerer bra, men det blir veldig smått. 

 


Størrelsen er brukbar. Men problemet er at det ikke er dobbeltbuffret, og sletting av hele skjermen er ganske tregt. Kan slette mindre rektangler av gangen, men det blir litt flimring.

Den passer ikke helt på toppen av en Ethernet shield, en komponent tar borti RJ45 sokkelen. Må forlenge pinnene.

 

Edit: Har også bestillt denne: 3.5 Inch TFT Color Screen Module 320 X 480

 

Et felles problem for alle displayene er mangel på passende frontplate (bezel). Det blir da krevende å montere på en pen måte.

Endret av Hårek
Lenke til kommentar

Med STOR hjelp fra Hårek så er mitt første nixie prosjekt helt ferdig. Alu-boksen er 163mm lang. Nå har jeg bestillt meg etsesett for kretskort, det tar vanvittig med tid å lodde ledninger mellom ic'er. Antar det gikk mellom 70 og 90 timer + det Hårek har brukt på å hjelpe meg. Han er særdeles dyktig! Klokka er basert på dette prosjektet https://github.com/8163jb/Nixie-Clock

 

Her er bloggen om prosjektet som mitt prosjekt er basert på: https://github.com/8163jb/Nixie-Clock

 

Men Hårek har endret betydelig på kildekoden. Alt til det bedre!

Om noen er interessert i koden så er det Hårek som i mine øyne er eier av den så den deler ikke jeg.

 

Klokka har en "standalone arduino" ATMEGA328P-PU som MCU, 3 stk 74HC595 og 6stk SN74141. RTC er DS3231 AT24C32 modul. Alle IC'er får 5v fra L7805CV og rørene har en 555 IRF740 switching PS som leverer 170v. Hørest enkelt ut men gud bedre hvor lang tid det tok...

 

 

Bilder av mitt første ferdige Nixie prosjekt:

Veldig flott klokke. Laget aluminium beholderen selv, kjøpt den spesifikt for dette prosjektet eller er det gjenbruk ifra noe annet? Driver å samler inn ideer til et fremtidelig nixe tube klokke prosjekt.

Lenke til kommentar
Gjest Slettet+5132

 

Med STOR hjelp fra Hårek så er mitt første nixie prosjekt helt ferdig. Alu-boksen er 163mm lang. Nå har jeg bestillt meg etsesett for kretskort, det tar vanvittig med tid å lodde ledninger mellom ic'er. Antar det gikk mellom 70 og 90 timer + det Hårek har brukt på å hjelpe meg. Han er særdeles dyktig! Klokka er basert på dette prosjektet https://github.com/8163jb/Nixie-Clock

 

Her er bloggen om prosjektet som mitt prosjekt er basert på: https://github.com/8163jb/Nixie-Clock

 

Men Hårek har endret betydelig på kildekoden. Alt til det bedre!

Om noen er interessert i koden så er det Hårek som i mine øyne er eier av den så den deler ikke jeg.

 

Klokka har en "standalone arduino" ATMEGA328P-PU som MCU, 3 stk 74HC595 og 6stk SN74141. RTC er DS3231 AT24C32 modul. Alle IC'er får 5v fra L7805CV og rørene har en 555 IRF740 switching PS som leverer 170v. Hørest enkelt ut men gud bedre hvor lang tid det tok...

 

 

Bilder av mitt første ferdige Nixie prosjekt:

Veldig flott klokke. Laget aluminium beholderen selv, kjøpt den spesifikt for dette prosjektet eller er det gjenbruk ifra noe annet? Driver å samler inn ideer til et fremtidelig nixe tube klokke prosjekt.

 

 

Handlet etter tenkelig mål, egentlig kjøpte jeg den til temperaturmåleren Hårek også har hjulpet meg med, men har enda en på tur. Har handlet to til med 120 lengde jeg skal lage klokker med 4 siffer på/i.

 

http://www.ebay.com/itm/391575271383?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Lenke til kommentar

Tja, jeg har minst 30 74LS32, om det kan brukes. Mulig jeg har noen HC også, men det får jeg ikke sjekket før jeg kommer hjem.

Jeg kan bruke LS også. Nevnte bare HC fordi den bruker mindre strøm.

 

Hvis du er villig til å sende meg noen i en konvolutt mot at jeg Vippser deg noen kroner blir jeg takknemlig :)

Lenke til kommentar

Hei! Trenger litt hjelp. Har fått til noe men ikke alt..

Skal få til at du må aktivere en RFID sensor så trykker du på en push knapp så aktiveres et rele og det blir aktivert helt til du aktivere RFID sensoren og tryller på knappen igjen.

Har lekt litt med RFID sensoren og funnet en kode på nett også har jeg fått til å skru av og på rele med en push knapp men får ikke begge kodene inn i samma Arduino kort og til å fungere sammen..

Lenke til kommentar

http://www.instructables.com/id/Arduino-RC522-RFID-Door-Unlock/?amp_page=true

Er vel den koden jeg har brukt.. funker fint men skulle fått til at istedenfor å aktivere utgangen så skal den aktivere en inngang i f.Eks 5sek og hvis jeg trykker på en annen knapp da så slår et rele deg på helt til man gjør det samme igjen..

Har ikke noe i mot å prøve selv men trenger litt hjelp her skal også legge inn flere kanpper til å styre noe lys men det prøver jegpå selv etter jeg får dette til..

Endret av iam99pk
Lenke til kommentar

nå er jeg hjemme.. denne koden bruker jeg på RFID.. 

 

 

/*
* --------------------------------------------------------------------------------------------------------------------
* Example sketch/program showing An Arduino Door Access Control featuring RFID, EEPROM, Relay
* --------------------------------------------------------------------------------------------------------------------
* This is a MFRC522 library example; for further details and other examples see: https://github.com/miguelbalboa/rfid
*
* This example showing a complete Door Access Control System

Simple Work Flow (not limited to) :
+---------+
+----------------------------------->READ TAGS+^------------------------------------------+
| +--------------------+ |
| | | |
| | | |
| +----v-----+ +-----v----+ |
| |MASTER TAG| |OTHER TAGS| |
| +--+-------+ ++-------------+ |
| | | | |
| | | | |
| +-----v---+ +----v----+ +----v------+ |
| +------------+READ TAGS+---+ |KNOWN TAG| |UNKNOWN TAG| |
| | +-+-------+ | +-----------+ +------------------+ |
| | | | | | |
| +----v-----+ +----v----+ +--v--------+ +-v----------+ +------v----+ |
| |MASTER TAG| |KNOWN TAG| |UNKNOWN TAG| |GRANT ACCESS| |DENY ACCESS| |
| +----------+ +---+-----+ +-----+-----+ +-----+------+ +-----+-----+ |
| | | | | |
| +----+ +----v------+ +--v---+ | +--------------->
+-------+EXIT| |DELETE FROM| |ADD TO| | |
+----+ | EEPROM | |EEPROM| | |
+-----------+ +------+ +-------------------------------+

*
* Use a Master Card which is act as Programmer then you can able to choose card holders who will granted access or not
*
* **Easy User Interface**
*
* Just one RFID tag needed whether Delete or Add Tags. You can choose to use Leds for output or Serial LCD module to inform users.
*
* **Stores Information on EEPROM**
*
* Information stored on non volatile Arduino's EEPROM memory to preserve Users' tag and Master Card. No Information lost
* if power lost. EEPROM has unlimited Read cycle but roughly 100,000 limited Write cycle.
*
* **Security**
* To keep it simple we are going to use Tag's Unique IDs. It's simple and not hacker proof.
*
* @license Released into the public domain.
*
* Typical pin layout used:
* -----------------------------------------------------------------------------------------
* MFRC522 Arduino Arduino Arduino Arduino Arduino
* Reader/PCD Uno/101 Mega Nano v3 Leonardo/Micro Pro Micro
* Signal Pin Pin Pin Pin Pin Pin
* -----------------------------------------------------------------------------------------
* RST/Reset RST 9 5 D9 RESET/ICSP-5 RST
* SPI SS SDA(SS) 10 53 D10 10 10
* SPI MOSI MOSI 11 / ICSP-4 51 D11 ICSP-4 16
* SPI MISO MISO 12 / ICSP-1 50 D12 ICSP-1 14
* SPI SCK SCK 13 / ICSP-3 52 D13 ICSP-3 15
*/

#include // We are going to read and write PICC's UIDs from/to EEPROM
#include // RC522 Module uses SPI protocol
#include // Library for Mifare RC522 Devices

/*
Instead of a Relay you may want to use a servo. Servos can lock and unlock door locks too
Relay will be used by default
*/

// #include

/*
For visualizing whats going on hardware we need some leds and to control door lock a relay and a wipe button
(or some other hardware) Used common anode led,digitalWriting HIGH turns OFF led Mind that if you are going
to use common cathode led or just seperate leds, simply comment out #define COMMON_ANODE,
*/

#define COMMON_ANODE

#ifdef COMMON_ANODE
#define LED_ON LOW
#define LED_OFF HIGH
#else
#define LED_ON HIGH
#define LED_OFF LOW
#endif

#define redLed 7 // Set Led Pins
#define greenLed 6
#define blueLed 5

#define relay 4 // Set Relay Pin
#define wipeB 3 // Button pin for WipeMode

boolean match = false; // initialize card match to false
boolean programMode = false; // initialize programming mode to false
boolean replaceMaster = false;

uint8_t successRead; // Variable integer to keep if we have Successful Read from Reader

byte storedCard[4]; // Stores an ID read from EEPROM
byte readCard[4]; // Stores scanned ID read from RFID Module
byte masterCard[4]; // Stores master card's ID read from EEPROM

// Create MFRC522 instance.
#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);

///////////////////////////////////////// Setup ///////////////////////////////////
void setup() {
//Arduino Pin Configuration
pinMode(redLed, OUTPUT);
pinMode(greenLed, OUTPUT);
pinMode(blueLed, OUTPUT);
pinMode(wipeB, INPUT_PULLUP); // Enable pin's pull up resistor
pinMode(relay, OUTPUT);
//Be careful how relay circuit behave on while resetting or power-cycling your Arduino
digitalWrite(relay, HIGH); // Make sure door is locked
digitalWrite(redLed, LED_OFF); // Make sure led is off
digitalWrite(greenLed, LED_OFF); // Make sure led is off
digitalWrite(blueLed, LED_OFF); // Make sure led is off

//Protocol Configuration
Serial.begin(9600); // Initialize serial communications with PC
SPI.begin(); // MFRC522 Hardware uses SPI protocol
mfrc522.PCD_Init(); // Initialize MFRC522 Hardware

//If you set Antenna Gain to Max it will increase reading distance
//mfrc522.PCD_SetAntennaGain(mfrc522.RxGain_max);

Serial.println(F("Access Control Example v0.1")); // For debugging purposes
ShowReaderDetails(); // Show details of PCD - MFRC522 Card Reader details

//Wipe Code - If the Button (wipeB) Pressed while setup run (powered on) it wipes EEPROM
if (digitalRead(wipeB) == LOW) { // when button pressed pin should get low, button connected to ground
digitalWrite(redLed, LED_ON); // Red Led stays on to inform user we are going to wipe
Serial.println(F("Wipe Button Pressed"));
Serial.println(F("You have 15 seconds to Cancel"));
Serial.println(F("This will be remove all records and cannot be undone"));
delay(15000); // Give user enough time to cancel operation
if (digitalRead(wipeB) == LOW) { // If button still be pressed, wipe EEPROM
Serial.println(F("Starting Wiping EEPROM"));
for (uint8_t x = 0; x < EEPROM.length(); x = x + 1) { //Loop end of EEPROM address
if (EEPROM.read(x) == 0) { //If EEPROM address 0
// do nothing, already clear, go to the next address in order to save time and reduce writes to EEPROM
}
else {
EEPROM.write(x, 0); // if not write 0 to clear, it takes 3.3mS
}
}
Serial.println(F("EEPROM Successfully Wiped"));
digitalWrite(redLed, LED_OFF); // visualize a successful wipe
delay(200);
digitalWrite(redLed, LED_ON);
delay(200);
digitalWrite(redLed, LED_OFF);
delay(200);
digitalWrite(redLed, LED_ON);
delay(200);
digitalWrite(redLed, LED_OFF);
}
else {
Serial.println(F("Wiping Cancelled")); // Show some feedback that the wipe button did not pressed for 15 seconds
digitalWrite(redLed, LED_OFF);
}
}
// Check if master card defined, if not let user choose a master card
// This also useful to just redefine the Master Card
// You can keep other EEPROM records just write other than 143 to EEPROM address 1
// EEPROM address 1 should hold magical number which is '143'
if (EEPROM.read(1) != 143) {
Serial.println(F("No Master Card Defined"));
Serial.println(F("Scan A PICC to Define as Master Card"));
do {
successRead = getID(); // sets successRead to 1 when we get read from reader otherwise 0
digitalWrite(blueLed, LED_ON); // Visualize Master Card need to be defined
delay(200);
digitalWrite(blueLed, LED_OFF);
delay(200);
}
while (!successRead); // Program will not go further while you not get a successful read
for ( uint8_t j = 0; j < 4; j++ ) { // Loop 4 times
EEPROM.write( 2 + j, readCard[j] ); // Write scanned PICC's UID to EEPROM, start from address 3
}
EEPROM.write(1, 143); // Write to EEPROM we defined Master Card.
Serial.println(F("Master Card Defined"));
}
Serial.println(F("-------------------"));
Serial.println(F("Master Card's UID"));
for ( uint8_t i = 0; i < 4; i++ ) { // Read Master Card's UID from EEPROM
masterCard = EEPROM.read(2 + i); // Write it to masterCard
Serial.print(masterCard, HEX);
}
Serial.println("");
Serial.println(F("-------------------"));
Serial.println(F("Everything Ready"));
Serial.println(F("Waiting PICCs to be scanned"));
cycleLeds(); // Everything ready lets give user some feedback by cycling leds
}


///////////////////////////////////////// Main Loop ///////////////////////////////////
void loop () {
do {
successRead = getID(); // sets successRead to 1 when we get read from reader otherwise 0
// When device is in use if wipe button pressed for 10 seconds initialize Master Card wiping
if (digitalRead(wipeB) == LOW) { // Check if button is pressed
// Visualize normal operation is iterrupted by pressing wipe button Red is like more Warning to user
digitalWrite(redLed, LED_ON); // Make sure led is off
digitalWrite(greenLed, LED_OFF); // Make sure led is off
digitalWrite(blueLed, LED_OFF); // Make sure led is off
// Give some feedback
Serial.println(F("Wipe Button Pressed"));
Serial.println(F("Master Card will be Erased! in 10 seconds"));
delay(10000); // Wait 10 seconds to see user still wants to wipe
if (digitalRead(wipeB) == LOW) {
EEPROM.write(1, 0); // Reset Magic Number.
Serial.println(F("Restart device to re-program Master Card"));
while (1);
}
}
if (programMode) {
cycleLeds(); // Program Mode cycles through Red Green Blue waiting to read a new card
}
else {
normalModeOn(); // Normal mode, blue Power LED is on, all others are off
}
}
while (!successRead); //the program will not go further while you are not getting a successful read
if (programMode) {
if ( isMaster(readCard) ) { //When in program mode check First If master card scanned again to exit program mode
Serial.println(F("Master Card Scanned"));
Serial.println(F("Exiting Program Mode"));
Serial.println(F("-----------------------------"));
programMode = false;
return;
}
else {
if ( findID(readCard) ) { // If scanned card is known delete it
Serial.println(F("I know this PICC, removing..."));
deleteID(readCard);
Serial.println("-----------------------------");
Serial.println(F("Scan a PICC to ADD or REMOVE to EEPROM"));
}
else { // If scanned card is not known add it
Serial.println(F("I do not know this PICC, adding..."));
writeID(readCard);
Serial.println(F("-----------------------------"));
Serial.println(F("Scan a PICC to ADD or REMOVE to EEPROM"));
}
}
}
else {
if ( isMaster(readCard)) { // If scanned card's ID matches Master Card's ID - enter program mode
programMode = true;
Serial.println(F("Hello Master - Entered Program Mode"));
uint8_t count = EEPROM.read(0); // Read the first Byte of EEPROM that
Serial.print(F("I have ")); // stores the number of ID's in EEPROM
Serial.print(count);
Serial.print(F(" record(s) on EEPROM"));
Serial.println("");
Serial.println(F("Scan a PICC to ADD or REMOVE to EEPROM"));
Serial.println(F("Scan Master Card again to Exit Program Mode"));
Serial.println(F("-----------------------------"));
}
else {
if ( findID(readCard) ) { // If not, see if the card is in the EEPROM
Serial.println(F("Welcome, You shall pass"));
granted(300); // Open the door lock for 300 ms
}
else { // If not, show that the ID was not valid
Serial.println(F("You shall not pass"));
denied();
}
}
}
}

///////////////////////////////////////// Access Granted ///////////////////////////////////
void granted ( uint16_t setDelay) {
digitalWrite(blueLed, LED_OFF); // Turn off blue LED
digitalWrite(redLed, LED_OFF); // Turn off red LED
digitalWrite(greenLed, LED_ON); // Turn on green LED
digitalWrite(relay, LOW); // Unlock door!
delay(setDelay); // Hold door lock open for given seconds
digitalWrite(relay, HIGH); // Relock door
delay(1000); // Hold green LED on for a second
}

///////////////////////////////////////// Access Denied ///////////////////////////////////
void denied() {
digitalWrite(greenLed, LED_OFF); // Make sure green LED is off
digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
digitalWrite(redLed, LED_ON); // Turn on red LED
delay(1000);
}


///////////////////////////////////////// Get PICC's UID ///////////////////////////////////
uint8_t getID() {
// Getting ready for Reading PICCs
if ( ! mfrc522.PICC_IsNewCardPresent()) { //If a new PICC placed to RFID reader continue
return 0;
}
if ( ! mfrc522.PICC_ReadCardSerial()) { //Since a PICC placed get Serial and continue
return 0;
}
// There are Mifare PICCs which have 4 byte or 7 byte UID care if you use 7 byte PICC
// I think we should assume every PICC as they have 4 byte UID
// Until we support 7 byte PICCs
Serial.println(F("Scanned PICC's UID:"));
for ( uint8_t i = 0; i < 4; i++) { //
readCard = mfrc522.uid.uidByte;
Serial.print(readCard, HEX);
}
Serial.println("");
mfrc522.PICC_HaltA(); // Stop reading
return 1;
}

void ShowReaderDetails() {
// Get the MFRC522 software version
byte v = mfrc522.PCD_ReadRegister(mfrc522.VersionReg);
Serial.print(F("MFRC522 Software Version: 0x"));
Serial.print(v, HEX);
if (v == 0x91)
Serial.print(F(" = v1.0"));
else if (v == 0x92)
Serial.print(F(" = v2.0"));
else
Serial.print(F(" (unknown),probably a chinese clone?"));
Serial.println("");
// When 0x00 or 0xFF is returned, communication probably failed
if ((v == 0x00) || (v == 0xFF)) {
Serial.println(F("WARNING: Communication failure, is the MFRC522 properly connected?"));
Serial.println(F("SYSTEM HALTED: Check connections."));
// Visualize system is halted
digitalWrite(greenLed, LED_OFF); // Make sure green LED is off
digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
digitalWrite(redLed, LED_ON); // Turn on red LED
while (true); // do not go further
}
}

///////////////////////////////////////// Cycle Leds (Program Mode) ///////////////////////////////////
void cycleLeds() {
digitalWrite(redLed, LED_OFF); // Make sure red LED is off
digitalWrite(greenLed, LED_ON); // Make sure green LED is on
digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
delay(200);
digitalWrite(redLed, LED_OFF); // Make sure red LED is off
digitalWrite(greenLed, LED_OFF); // Make sure green LED is off
digitalWrite(blueLed, LED_ON); // Make sure blue LED is on
delay(200);
digitalWrite(redLed, LED_ON); // Make sure red LED is on
digitalWrite(greenLed, LED_OFF); // Make sure green LED is off
digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
delay(200);
}

//////////////////////////////////////// Normal Mode Led ///////////////////////////////////
void normalModeOn () {
digitalWrite(blueLed, LED_ON); // Blue LED ON and ready to read card
digitalWrite(redLed, LED_OFF); // Make sure Red LED is off
digitalWrite(greenLed, LED_OFF); // Make sure Green LED is off
digitalWrite(relay, HIGH); // Make sure Door is Locked
}

//////////////////////////////////////// Read an ID from EEPROM //////////////////////////////
void readID( uint8_t number ) {
uint8_t start = (number * 4 ) + 2; // Figure out starting position
for ( uint8_t i = 0; i < 4; i++ ) { // Loop 4 times to get the 4 Bytes
storedCard = EEPROM.read(start + i); // Assign values read from EEPROM to array
}
}

///////////////////////////////////////// Add ID to EEPROM ///////////////////////////////////
void writeID( byte a[] ) {
if ( !findID( a ) ) { // Before we write to the EEPROM, check to see if we have seen this card before!
uint8_t num = EEPROM.read(0); // Get the numer of used spaces, position 0 stores the number of ID cards
uint8_t start = ( num * 4 ) + 6; // Figure out where the next slot starts
num++; // Increment the counter by one
EEPROM.write( 0, num ); // Write the new count to the counter
for ( uint8_t j = 0; j < 4; j++ ) { // Loop 4 times
EEPROM.write( start + j, a[j] ); // Write the array values to EEPROM in the right position
}
successWrite();
Serial.println(F("Succesfully added ID record to EEPROM"));
}
else {
failedWrite();
Serial.println(F("Failed! There is something wrong with ID or bad EEPROM"));
}
}

///////////////////////////////////////// Remove ID from EEPROM ///////////////////////////////////
void deleteID( byte a[] ) {
if ( !findID( a ) ) { // Before we delete from the EEPROM, check to see if we have this card!
failedWrite(); // If not
Serial.println(F("Failed! There is something wrong with ID or bad EEPROM"));
}
else {
uint8_t num = EEPROM.read(0); // Get the numer of used spaces, position 0 stores the number of ID cards
uint8_t slot; // Figure out the slot number of the card
uint8_t start; // = ( num * 4 ) + 6; // Figure out where the next slot starts
uint8_t looping; // The number of times the loop repeats
uint8_t j;
uint8_t count = EEPROM.read(0); // Read the first Byte of EEPROM that stores number of cards
slot = findIDSLOT( a ); // Figure out the slot number of the card to delete
start = (slot * 4) + 2;
looping = ((num - slot) * 4);
num--; // Decrement the counter by one
EEPROM.write( 0, num ); // Write the new count to the counter
for ( j = 0; j < looping; j++ ) { // Loop the card shift times
EEPROM.write( start + j, EEPROM.read(start + 4 + j)); // Shift the array values to 4 places earlier in the EEPROM
}
for ( uint8_t k = 0; k < 4; k++ ) { // Shifting loop
EEPROM.write( start + j + k, 0);
}
successDelete();
Serial.println(F("Succesfully removed ID record from EEPROM"));
}
}

///////////////////////////////////////// Check Bytes ///////////////////////////////////
boolean checkTwo ( byte a[], byte b[] ) {
if ( a[0] != 0 ) // Make sure there is something in the array first
match = true; // Assume they match at first
for ( uint8_t k = 0; k < 4; k++ ) { // Loop 4 times
if ( a[k] != b[k] ) // IF a != b then set match = false, one fails, all fail
match = false;
}
if ( match ) { // Check to see if if match is still true
return true; // Return true
}
else {
return false; // Return false
}
}

///////////////////////////////////////// Find Slot ///////////////////////////////////
uint8_t findIDSLOT( byte find[] ) {
uint8_t count = EEPROM.read(0); // Read the first Byte of EEPROM that
for ( uint8_t i = 1; i <= count; i++ ) { // Loop once for each EEPROM entry
readID(i); // Read an ID from EEPROM, it is stored in storedCard[4]
if ( checkTwo( find, storedCard ) ) { // Check to see if the storedCard read from EEPROM
// is the same as the find[] ID card passed
return i; // The slot number of the card
break; // Stop looking we found it
}
}
}

///////////////////////////////////////// Find ID From EEPROM ///////////////////////////////////
boolean findID( byte find[] ) {
uint8_t count = EEPROM.read(0); // Read the first Byte of EEPROM that
for ( uint8_t i = 1; i <= count; i++ ) { // Loop once for each EEPROM entry
readID(i); // Read an ID from EEPROM, it is stored in storedCard[4]
if ( checkTwo( find, storedCard ) ) { // Check to see if the storedCard read from EEPROM
return true;
break; // Stop looking we found it
}
else { // If not, return false
}
}
return false;
}

///////////////////////////////////////// Write Success to EEPROM ///////////////////////////////////
// Flashes the green LED 3 times to indicate a successful write to EEPROM
void successWrite() {
digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
digitalWrite(redLed, LED_OFF); // Make sure red LED is off
digitalWrite(greenLed, LED_OFF); // Make sure green LED is on
delay(200);
digitalWrite(greenLed, LED_ON); // Make sure green LED is on
delay(200);
digitalWrite(greenLed, LED_OFF); // Make sure green LED is off
delay(200);
digitalWrite(greenLed, LED_ON); // Make sure green LED is on
delay(200);
digitalWrite(greenLed, LED_OFF); // Make sure green LED is off
delay(200);
digitalWrite(greenLed, LED_ON); // Make sure green LED is on
delay(200);
}

///////////////////////////////////////// Write Failed to EEPROM ///////////////////////////////////
// Flashes the red LED 3 times to indicate a failed write to EEPROM
void failedWrite() {
digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
digitalWrite(redLed, LED_OFF); // Make sure red LED is off
digitalWrite(greenLed, LED_OFF); // Make sure green LED is off
delay(200);
digitalWrite(redLed, LED_ON); // Make sure red LED is on
delay(200);
digitalWrite(redLed, LED_OFF); // Make sure red LED is off
delay(200);
digitalWrite(redLed, LED_ON); // Make sure red LED is on
delay(200);
digitalWrite(redLed, LED_OFF); // Make sure red LED is off
delay(200);
digitalWrite(redLed, LED_ON); // Make sure red LED is on
delay(200);
}

///////////////////////////////////////// Success Remove UID From EEPROM ///////////////////////////////////
// Flashes the blue LED 3 times to indicate a success delete to EEPROM
void successDelete() {
digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
digitalWrite(redLed, LED_OFF); // Make sure red LED is off
digitalWrite(greenLed, LED_OFF); // Make sure green LED is off
delay(200);
digitalWrite(blueLed, LED_ON); // Make sure blue LED is on
delay(200);
digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
delay(200);
digitalWrite(blueLed, LED_ON); // Make sure blue LED is on
delay(200);
digitalWrite(blueLed, LED_OFF); // Make sure blue LED is off
delay(200);
digitalWrite(blueLed, LED_ON); // Make sure blue LED is on
delay(200);
}

////////////////////// Check readCard IF is masterCard ///////////////////////////////////
// Check to see if the ID passed is the master programing card
boolean isMaster( byte test[] ) {
if ( checkTwo( test, masterCard ) )
return true;
else
return false;
}

 

 

så det jeg trenger hjelp til er jo å få "reley 4" til å bli et "intern" rele på arduino som aktiverer en inngang som en knapp er trykket til, når knappen blir trykket inn etter at RIFD sensoren er aktivert så slår et rele seg på helt til man aktiverer RFID og trykker inn knappen igjen.. 

skal også gjøre noe av det samme med 3 andre rele bare uten RFID sensoren først men det tar jeg å prøver på etter jeg har fått RFID og en push knapp til å funke :)


EDIT: har fått litt mere til. må bare få alt over på et arduino kort, bruker utangen som er til relet til en bryter heller, så når "rele" utgangen er aktiv så kan jeg bruke push knappen.. funker med 2 arduino kort så må bare få alt inn i en og samme kode. 

Endret av iam99pk
Lenke til kommentar

Noen her som er gode på Arduino kode som vil lage noe for meg, mot noen kroner i betaling..

 

Skulle gjærne gjort det selv men da jeg ikke kan så mye om Arduino kodingen og ikke har tid til å sette meg inn i det nå også haster prosjektet litt nå..

 

 

Koden i forje innlegg jeg la ut funker bra til å begynne med, altså du har RFID sensoren, lys MasterCard og wipe kanpp

 

Har tengte å måtte scanne et kort/brikke, blir den godkjent så har du f.eks 10sek på deg til å trykke på en knapp, gjør du det så slår et rele seg på helt til du gjør det samme igjen. Altså for å skru av og på relet må det ver en godkjent brikke og trykket inn en push knapp.

Er det ikke et godkjent kort så skjer det ikke noe.. MasterCard kan legge til og fjerne kort

 

Skal også ha 3 andre knapper som kjører uavhengig av alt det andre. Trykker du på knapp 1 så slår rele 1 seg på eller av (avhengig av hva det var før du trykker på knappen)

Trykker du på knapp 2 så slår rele 2 deg på eller av

Trykker du på knapp 3 så slår rele 3 seg på eller av

 

Skal bruke er Arduino mega kort og en RFID RC522 sensor og 4 push kanpper, kjører et egen rele modul kort.

 

Hvis noe gidder å gjøre dette for meg (sikkert lett for dere som kan det) så send meg en melling så tar vi det der ifra :-)

Lenke til kommentar
  • 1 måned senere...

trenger litt hjelp.. hva må jeg forandre på? har koblet push knappene ifra arduion, igjennom push knappen og ned i GND.. når jeg trykker på en knapp så gikk det på flere rele også når jeg slapp knappen så slo alle seg av igjen..

 

så prøvde jeg å fjerne alt utenom "power" og da funket det likt bare med 1 rele, altså når jeg har knappen trykket inn så er releet på men når jeg slipper den så slår releet seg av.. MEN når jeg prøvde med led lys så skrudde lyset seg av og på som det skulle..

 

 

int inpower = 2;
int inwhite = 3;
int inred = 4;
int ingreen = 5;
int inblue = 6;

int outpower = 37;
int outwhite = 31;
int outred = 32;
int outgreen = 33;
int outblue = 34;

int statepower = LOW;
int statewhite = LOW;
int statered = LOW;
int stategreen = LOW;
int stateblue = LOW;

int readingpower;
int readingwhite;
int readingred;
int readinggreen;
int readingblue;

int previouspower = HIGH;
int previouswhite = HIGH;
int previousred = HIGH;
int previousgreen = HIGH;
int previousblue = HIGH;

long timepower = 0;
long timewhite = 0;
long timered = 0;
long timegreen = 0;
long timeblue = 0;

long debouncepower = 500;
long debouncewhite = 500;
long debouncered = 500;
long debouncegreen = 500;
long debounceblue = 500;

void setup()
{
pinMode(inpower, INPUT_PULLUP);
pinMode(inwhite, INPUT_PULLUP);
pinMode(inred, INPUT_PULLUP);
pinMode(ingreen, INPUT_PULLUP);
pinMode(inblue, INPUT_PULLUP);
pinMode(outpower, OUTPUT),
pinMode(outwhite, OUTPUT);
pinMode(outred, OUTPUT);
pinMode(outgreen, OUTPUT);
pinMode(outblue, OUTPUT);

}


void loop()
{
readingpower = digitalRead(inpower);

if (readingpower == HIGH && previouspower == LOW && millis() - timepower > debouncepower) {
if (statepower == HIGH)
statepower = LOW;
else
statepower = HIGH;

timepower = millis();
}

digitalWrite(outpower, statepower);

previouspower = readingpower;


readingwhite = digitalRead(inwhite);

if (readingwhite == HIGH && previouswhite == LOW && millis() - timewhite > debouncewhite) {
if (statewhite == HIGH)
statewhite = LOW;
else
statewhite = HIGH;

timewhite = millis();
}

digitalWrite(outwhite, statewhite);

previouswhite = readingwhite;


readingred = digitalRead(inred);

if (readingred == HIGH && previousred == LOW && millis() - timered > debouncered) {
if (statered == HIGH)
statered = LOW;
else
statered = HIGH;

timered = millis();
}

digitalWrite(outred, statered);

previousred = readingred;


readinggreen = digitalRead(ingreen);

if (readinggreen == HIGH && previousgreen == LOW && millis() - timegreen > debouncegreen) {
if (stategreen == HIGH)
stategreen = LOW;
else
stategreen = HIGH;

timegreen = millis();
}

digitalWrite(outgreen, stategreen);

previousgreen = readinggreen;


readingblue = digitalRead(inblue);

if (readingblue == HIGH && previousblue == LOW && millis() - timeblue > debounceblue) {
if (stateblue == HIGH)
stateblue = LOW;
else
stateblue = HIGH;

timeblue = millis();
}

digitalWrite(outblue, stateblue);

previousblue = readingblue;
}

 

Lenke til kommentar

Hvis jeg forstår deg riktig så fungerer det med LED, men ikke med rele?

En forskjell på LED og rele er at et rele gir fra seg energi når det kobles fra, og den energien kan forstyrre kretsen.

Har du koblet en diode over releet?

fikk det til, var at jeg kjørte strøm ifra usb til arduino og resten av kresten gikk på annen psu.. koblet 5v og GND inn på arduino pinnen så funket det som det skulle

Lenke til kommentar
  • 1 måned senere...

Hei! Skulle gjerne hatt litt hjelp angående en Arduino kode.

 

Lager et spill, som består av 4 led-knapper, og en Arduino uno. 

For å starte spillet trykker man 2 ganger på en av de 4 knappene. Når spille starter vil en av de 4 knappene lyse og du må trykke på den for at den skal skru seg av. Etterhvert vil en annen knapp lyset, sånn er spillet helt til man trykker 2 ganger på en av knappene, da vil spillet stoppet.

 

Om det er mulig, så hadde det vært kult om tiden mellom lysene i knappene kom i forskjellig tempo.

Er dette mulig? 

 

Martin

Lenke til kommentar
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...