Indholdsfortegnelse:

Motion Sensored LED: 8 trin
Motion Sensored LED: 8 trin

Video: Motion Sensored LED: 8 trin

Video: Motion Sensored LED: 8 trin
Video: PIR Motion Sensor Light | Motion Sensor Module | PIR Module | How to Use PIR Motion Sensor | 2024, Juli
Anonim
Image
Image

Baggrund:

Har du nogensinde glemt at slukke et lys, før du går til undervisning eller arbejde eller før du går i seng? De timer med lysene tændt, når du ikke bruger dem, kan virkelig øge omkostningerne og energitabet. For eksempel, ifølge solarcity.com, kan lyset på hele natten i en uge tilføje $ 25 til din elregning! Til vores CPE133 -projekt designer vi et bevægelsessensorlys for at hjælpe folk med at spare energi i deres hjem og bruge deres lys effektivt.

Vores system i praksis:

I praksis ville lysene kun tænde, når en sensor registrerer bevægelse i rummet. Derefter forbliver lysene tændt i et bestemt tidsrum, f.eks. Omkring 30 minutter, og slukker derefter automatisk. Men lad os sige, at du lige var på vej forbi eller ville forlade lokalet tidligt, inden den angivne tid var forbi. I disse tilfælde har vi installeret en knap, hvor du kan tænde eller slukke lyset manuelt. Bemærk, at lysene forbliver tændt i 30 minutter, selv når lysene tændes manuelt eller automatisk (medmindre lysene slukkes manuelt).

Simulering om bord:

For at se, at timeren fungerer, ændrede vi timeren til 1 minut.

Materialer:

  • 1 Basys board (du kan finde en her fra Digilent)
  • 1 PIR -bevægelsessensor (du kan finde en her på Amazon)
  • 1 brødbræt og kit (vi foreslår at bruge denne fra Amazon)
  • Fra sættet ovenfor

    • 1 LED
    • 3 hun- til han -jumperkabler
    • 6 startkabler fra han til mand

Trin 1: Timer

For at LED'en skal forblive tændt i 1 minut, skal vi først oprette en timer. Basys 3 -kortet har en intern frekvens på 100MHz, hvilket gør 100 millioner cyklusser lig med 1 sekund. Dette bruges derefter som en variabel, der fungerer som et maksimalt tal for "t_cnt". T_cnt øges med 1, da Basys 3 -kortet fuldender en cyklus. Når den når 100 millioner -mærket, nulstilles den, og en anden variabel, "sek", stiger med 1. Denne "sek" -variabel repræsenterer antallet af sekunder, der er gået, og når denne variabel er lig med 60, er der gået et helt minut.

Kopier koden herunder til en vhdl -kildefil ved navn Timer.

enhed COUNT_8B er

port (RESET: i std_logic;

CLK: i std_logic; T: out std_logic: = '0');

afslut COUNT_8B;

arkitektur er mit_tal på COUNT_8B

konstant max_count: heltal: = (100000000); --signal t_cnt: std_logic_vector (7 ned til 0): = "00000000"; signal t_cnt: heltal: = (0); start processen (CLK, RESET, t_cnt) variabel sek: heltal: = 0; begynde hvis (stigende_kant (CLK)) derefter hvis (RESET = '1') derefter t_cnt <= (0); - ryd elsif (t_cnt = max_count) derefter- max_count er 100 millioner, hvilket er lig med 1 sekund t_cnt <= (0); - Nulstiller intern ur til 0 sek: = sek + 1; - Forøger vores 'langsomme ur' med 1 hvis (sek = 60) derefter- Når det når 60 sekunder, så har det nået maks. Tid sek: = 0; - Nulstiller "langsomt ur" til 0 T <= '1'; Afslut Hvis; ellers t_cnt <= t_cnt + 1; - øger det interne ur T <= '0'; Afslut Hvis; Afslut Hvis; afslutte processen; afslut mit_count;

Trin 2: Knapoptimering

LED
LED

Da frekvensen i Basys -kortene er så høj (omkring 100 MHz), når du trykker på det, du synes er kort tid, til Basys -kortet, ville du trykke på det 100.000 gange. Dette får lyset til at blinke hurtigt mellem tilstanden tændt og slukket. Vi forsøgte at optimere knappen ved at oprette et tilstandsdiagram for at reducere flimren.

D-flip-flopsne holder hver tilstand, og derefter angiver vi tilstandsovergange i proceserklæringen.

Kopier koden herunder til en vhdl -kildefil ved navn Button.

bibliotek IEEE; brug IEEE. STD_LOGIC_1164. ALL;

enhedsknappen er

Port (btn: i STD_LOGIC; clk: i STD_LOGIC; E: ud STD_LOGIC); afslutningsknap;

arkitektur Adfærdsmæssig knap er

type state_type er (TRYKT, NP); signal PS, NS: state_type: = NP;

begynde

seq_proc: proces (NS, clk) begynder hvis (rising_edge (clk)) derefter PS <= NS; Afslut Hvis; afslutte processen seq_proc;

ns_proc: proces (btn, PS)

start case PS er når NP => if (btn = '1') derefter NS <= TRYKT; E <= '1'; ellers NS <= NP; E hvis (btn = '0') så NS <= NP; E <= '0'; ellers NS <= TRYKT; E <= '0'; Afslut Hvis; slut sag; afslutte processen ns_proc;

ende Adfærdsmæssig;

Trin 3: LED

LED'en har to tilstande: OFF (eller tomgang) og ON. Som sagt før er staterne gemt i en d-flip-flop. Lyset vil dreje, hvis sensoren registrerer bevægelse (S = 1), eller når der trykkes på en knap (E = 1). Lysdioden slukker automatisk, hvis timeren når 1 minut (T = 1) eller manuelt, når der trykkes på en knap (E = 1).

Kopier koden herunder til en vhdl -kildefil ved navn LED.

enhed motion_sensored_light er Port (S: i STD_LOGIC; - sesnor; Port JA10/Pin G3 E: i STD_LOGIC; - ekstern knap til manuel funktion; Centerknap T: i STD_LOGIC; - når timeren når maks. tid; Fra timer LED: out STD_LOGIC; - lys TRST: out STD_LOGIC; - nulstiller timer clk: i STD_LOGIC); - clk til flip flop, der holder tilstanden slut motion_sensored_light;

arkitektur Behavioral of motion_sensored_light er

type state_type er (ST0, ST1); --ST0 = Tomgang, ST1 = LED HØJ

signal PS, NS: state_type: = ST0; - PRESENT STATE AND NEXT STATE, starter i ST0 IDLE

begynde

- procesblok af flip flop- opdaterer tilstand på stigende kant af ur seq_proc: proces (NS, clk) begynder- d flip flop, der holder tilstande hvis (rising_edge (clk)) derefter PS <= NS; Afslut Hvis; afslutte processen seq_proc;

ns_proc: proces (S, E, T, PS)

start case PS er når ST0 => LED <= '0'; - udgange til inaktiv tilstand TRST <= '1'; hvis (S = '0' ELLER E = '1') så - input til overgang fra st0 til st1 NS <= ST1; ellers NS LED <= '1'; - udgange til på tilstand TRST <= '0'; hvis (E = '1' ELLER T = '1') derefter - input til overgang fra st1 til st0 NS <= ST0; ellers NS <= ST1; Afslut Hvis; slut sag; afslutte processen ns_proc;

ende Adfærdsmæssig;

Trin 4: Topfil

Nu skal vi portkortlægge alle vores andre filer til en.

Kopier koden herunder til en vhdl -kildefil ved navn Top_File.

bibliotek IEEE; brug IEEE. STD_LOGIC_1164. ALL;

enhed Top_File er

Port (S: i STD_LOGIC: = '1'; - sesnor; Port JA10/Pin G3 btn: i STD_LOGIC: = '0'; - ekstern knap til manuel funktion; LED i midterknap: ud STD_LOGIC; - let clk: i STD_LOGIC); - clk for flip flop, der holder tilstanden slutter Top_File;

arkitektur Adfærdsmæssig af Top_File er

komponent COUNT_8B er

port (RESET: in std_logic: = '0'; CLK: in std_logic; T: out std_logic: = '0'); slutkomponent; komponent motion_sensored_light er Port (S: i STD_LOGIC; - sesnor; Port JA10/Pin G3 E: i STD_LOGIC; - ekstern knap til manuel funktion; Centerknap T: i STD_LOGIC; - når timeren når maks. tid; Fra timer LED: out STD_LOGIC; - lys TRST: out STD_LOGIC; - nulstiller timer clk: i STD_LOGIC); - clk til flip-flop, der holder tilstandens endekomponent; komponentknappen er Port (btn: i STD_LOGIC; clk: i STD_LOGIC; E: out STD_LOGIC); slutkomponent; signal t_reached_c: std_logic; - signal r_time_c: std_logic; - signal knap_c: std_logic;

begynde

timer: COUNT_8B portkort (RESET => r_time_c, CLK => CLK, T => t_reached_c); motion_sensor: motion_sensored_light portkort (S => S, E => button_c, T => t_reached_c, LED => LED, TRST => r_time_c, clk => clk); button_controller: knapportskort (btn => btn, clk => clk, E => button_c); ende Adfærdsmæssig;

Trin 5: Begrænsningsfil

Nu skal vi definere, hvor vores input og output vil være på tavlen.

Kopier koden herunder til en vhdl -begrænsningsfil med navnet Constraints.

## Denne fil er en generel.xdc for Basys3 rev B -tavlen ## Sådan bruges den i et projekt: ## - kommenter linjerne svarende til brugte pins ## - omdøb de brugte porte (i hver linje, efter get_ports) i henhold til til signalnavne på øverste niveau i projektet

## Ursignal

set_property PACKAGE_PIN W5 [get_ports clk] set_property IOSTANDARD LVCMOS33 [get_ports clk] create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports clk] ## Switches #set_property PACKAGE_PIN V17 [0] set_property IOSTANDARD LVCMOS33 [get_ports {sw [0]}] #set_property PACKAGE_PIN V16 [get_ports {sw [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [1]}] #set_property PACKAGE_PIN W16 [get_port] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [2]}] #set_property PACKAGE_PIN W17 [get_ports {sw [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [3]}] #set_property PACKAGE_PIN W15 [4]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [4]}] #set_property PACKAGE_PIN V15 [get_ports {sw [5]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [5]}] #set_property PACKAGE_PIN W14

## LED'er

#set_property PACKAGE_PIN U16 [get_ports {led [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [0]}] #set_property PACKAGE_PIN E19 [get_ports {led [1]}] #set_property IOSTANDARD LVCMOS33 [get_port] }] #set_property PACKAGE_PIN U19 [get_ports {led [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [2]}] #set_property PACKAGE_PIN V19 [get_ports {led [3]}] #set_property IOSTANDARD LVCMOS33 [3]}] #set_property PACKAGE_PIN W18 [get_ports {led [4]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [4]}] #set_property PACKAGE_PIN U15 [get_ports {led [5]}] #set_property IOSTANDARD LVCMOS33 led [5]}] #set_property PACKAGE_PIN U14 [get_ports {led [6]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [6]}] #set_property PACKAGE_PIN V14 [get_ports {led [7]}] #set_property IOSTANDARD LVCM get_ports {led [7]}] #set_property PACKAGE_PIN V13 [get_ports {led [8]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [8]}] #set_property PACKAGE_PIN V3 [get_ports {led [9]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [9]}] #set_property PACKAGE_PIN W3 [get_ports {led [10]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [10]}] #set_property PACKAGE_PIN U3

#set_property PACKAGE_PIN V7 [get_ports dp]

#set_property IOSTANDARD LVCMOS33 [get_ports dp]

#set_property PACKAGE_PIN U2 [get_ports {an [0]}]

#set_property IOSTANDARD LVCMOS33 [get_ports {an [0]}] #set_property PACKAGE_PIN U4 [get_ports {an [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {an [1]}] #set_property PACKAGE_PIN V4 [get_port] }] #set_property IOSTANDARD LVCMOS33 [get_ports {an [2]}] #set_property PACKAGE_PIN W4 [get_ports {an [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {an [3]}]

## Knapper

set_property PACKAGE_PIN U18 [get_ports btn] set_property IOSTANDARD LVCMOS33 [get_ports btn] #set_property PACKAGE_PIN T18 [get_ports btnU] #set_property IOSTANDARD LVCMOS33 [get_ports btnU] #set_property PACKAGE_PIN W19 [get_ports btnL] #set_property IOSTANDARD LVCMOS33 [get_ports btnL] #set_property PACKAGE_PIN T17 [get_ports btnR] #set_property IOSTANDARD LVCMOS33 [get_ports btnR] #set_property PACKAGE_PIN U17 [get_ports btnD] #set_property IOSTANDARD LVCMOS33 [get_ports btnD]

## Pmod Header JA

## Sch name = JA1 #set_property PACKAGE_PIN J1 [get_ports {JA [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JA [0]}] ## Sch name = JA2 #set_property PACKAGE_PIN L2 [get_ports {JA [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JA [1]}] ## Sch name = JA3 #set_property PACKAGE_PIN J2 [get_ports {JA [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JA [2]}] ## Sch navn = JA4 #set_property PACKAGE_PIN G2 [get_ports {JA [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JA [3]}] ## Sch name = JA7 #set_property PACKAGE_PIN H1 [get_ports {JA [4]}] #AND_pro LVCMOS33 [get_ports {JA [4]}] ## Sch name = JA8 set_property PACKAGE_PIN K2 [get_ports LED] set_property IOSTANDARD LVCMOS33 [get_ports LED] ## Sch name = JA9 #set_property PACKAGE_PIN H2 [get_port} {6] set_property IOSTANDARD LVCMOS33 [get_ports {JA [6]}] ## Sch name = JA10 set_property PACKAGE_PIN G3 [get_ports S] set_property IOSTANDARD LVCMOS33 [get_ports S]

## Pmod Header JB

## Sch name = JB1 #set_property PACKAGE_PIN A14 [get_ports {JB [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [0]}] ## Sch name = JB2 #set_property PACKAGE_PIN A16 [get_ports {JB [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [1]}] ## Sch name = JB3 #set_property PACKAGE_PIN B15 [get_ports {JB [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [2]}] ## Sch navn = JB4 #set_property PACKAGE_PIN B16 [get_ports {JB [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [3]}] ## Sch name = JB7 #set_property PACKAGE_PIN A15 [get_ports {JB [4]}] #AND_pro LVCMOS33 [get_ports {JB [4]}] ## Sch name = JB8 #set_property PACKAGE_PIN A17 [get_ports {JB [5]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [5]}] ## Sch navn = JB9 #set_property PACKAGE_PIN C15 [get_ports {JB [6]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [6]}] ## Sch name = JB10 #set_property PACKAGE_PIN C16 [get_ports {JB [7]}] #set_property IOSTANDARD LVCM JB [7]}]

## Pmod Header JC

## Sch name = JC1 #set_property PACKAGE_PIN K17 [get_ports {JC [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [0]}] ## Sch name = JC2 #set_property PACKAGE_PIN M18 [get_ports {JC [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [1]}] ## Sch name = JC3 #set_property PACKAGE_PIN N17 [get_ports {JC [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [2]}] ## Sch navn = JC4 #set_property PACKAGE_PIN P18 [get_ports {JC [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [3]}] ## Sch name = JC7 #set_property PACKAGE_PIN L17 [get_ports {JC [4]}] #AND_pro LVCMOS33 [get_ports {JC [4]}] ## Sch name = JC8 #set_property PACKAGE_PIN M19 [get_ports {JC [5]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [5]}] ## Sch navn = JC9 #set_property PACKAGE_PIN P17 [get_ports {JC [6]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [6]}] ## Sch name = JC10 #set_property PACKAGE_PIN R18 [get_ports {JC [7]}] #set_property IOSTANDARD LVCM JC [7]}]

## Pmod Header JXADC

## Sch name = XA1_P #set_property PACKAGE_PIN J3 [get_ports {JXADC [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC [0]}] ## Sch name = XA2_P #set_property PACKAGE_PIN L3 [get_port] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC [1]}] ## Sch name = XA3_P #set_property PACKAGE_PIN M2 [get_ports {JXADC [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC#] = XA4_P #set_property PACKAGE_PIN N2 [get_ports {JXADC [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC [3]}] ## Sch name = XA1_N #set_property PACKAGE_PIN K3 [get_port_PART] {JXAD] LVCMOS33 [get_ports {JXADC [4]}] ## Sch name = XA2_N #set_property PACKAGE_PIN M3 [get_ports {JXADC [5]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC [5]}] ## Schset = XA3_N PACKAGE_PIN M1 [get_ports {JXADC [6]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC [6]}] ## Sch name = XA4_N #set_property PACKAGE_PIN N1 [get_ports {JXADC [7]}] #set_property [get_ports {JXADC [7]}]

## VGA -stik

#set_property PACKAGE_PIN G19 [get_ports {vgaRed [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaRed [0]}] #set_property PACKAGE_PIN H19 [get_ports {vgaRed [1]}] #set_property_OST_ARD_OS33 [get_property_OST] }] #set_property PACKAGE_PIN J19 [get_ports {vgaRed [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaRed [2]}] #set_property PACKAGE_PIN N19 [get_ports {vgaRed [3]}] #set_property [v3RED] 3]}] #set_property PACKAGE_PIN N18 [get_ports {vgaBlue [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaBlue [0]}] #set_property PACKAGE_PIN L18 [get_ports {vgaBlue [1]}] set vgaBlue [1]}] #set_property PACKAGE_PIN K18 [get_ports {vgaBlue [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaBlue [2]}] #set_property PACKAGE_PIN J18 [get_ports {vgaBluOST [v3] #prog. get_ports {vgaBlue [3]}] #set_property PACKAGE_PIN J17 [get_ports {vgaGreen [0]}] #set_property IOSTANDARD LVCMOS33 [get_p orts {vgaGreen [0]}] #set_property PACKAGE_PIN H17 [get_ports {vgaGreen [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaGreen [1]}] #set_property PACKAGE_PIN G17 [get_ports {vgaGOST_ARD] LVCMOS33 [get_ports {vgaGreen [2]}] #set_property PACKAGE_PIN D17 [get_ports {vgaGreen [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaGreen [3]}] #set_property PACKAGE_PIN P19_get_port_get_port_post_port_post_port_post_port_post_port_get_port Hsync] #set_property PACKAGE_PIN R19 [get_ports Vsync] #set_property IOSTANDARD LVCMOS33 [get_ports Vsync]

## USB-RS232-grænseflade

#set_property PACKAGE_PIN B18 [get_ports RsRx] #set_property IOSTANDARD LVCMOS33 [get_ports RsRx] #set_property PACKAGE_PIN A18 [get_ports RsTx] #set_property IOSTANDARD LVCMOS33 [get_ports RsTx]

## USB HID (PS/2)

#set_property PACKAGE_PIN C17 [get_ports PS2Clk] #set_property IOSTANDARD LVCMOS33 [get_ports PS2Clk] #set_property PULLUP true [get_ports PS2Clk] #set_property PACKAGE_PIN BESTILLING_POS_PORT_POS_PORT_POS_PORT_POS_PART_POS_PART_POS_POS_PARTS_PRODUKT_PS_PARTS_PRODUKT_PS2_data]

## Quad SPI Flash

## Bemærk, at CCLK_0 ikke kan placeres i 7 seriens enheder. Du kan få adgang til den ved hjælp af ## STARTUPE2 primitiv. #set_property PACKAGE_PIN D18 [get_ports {QspiDB [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {QspiDB [0]}] #set_property PACKAGE_PIN D19 [get_ports {QspiDB [1]}] #set_property [LOG_SP_PORT] }] #set_property PACKAGE_PIN G18 [get_ports {QspiDB [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {QspiDB [2]}] #set_property PACKAGE_PIN F18 [get_ports {QspiDB [3]}] #set_pro_PART_PART_PART_PORT 3]}] #set_property PACKAGE_PIN K19 [get_ports QspiCSn] #set_property IOSTANDARD LVCMOS33 [get_ports QspiCSn]

Trin 6: Tilslutning af PIR -bevægelsessensoren

Tilslutning af PIR -bevægelsessensoren
Tilslutning af PIR -bevægelsessensoren
Tilslutning af PIR -bevægelsessensoren
Tilslutning af PIR -bevægelsessensoren

PIR -bevægelsessensoren har tre ben: henholdsvis effekt, gnd og alarm (se det første billede). Den bevægelsesføler, der foreslås i denne instruktionsbog, kan tilsluttes direkte til brødbrættet. Men til den sensor, vi brugte, var vi nødt til at klippe og fjerne ledningerne og derefter lodde de udsatte ender for at forhindre dem i at flå. På brødbrættet skal du indsætte en han -til -hun -jumperkabel i serie med strøm- og jordstifterne og derefter en mandlig til mandlig jumperledning i serie med alarmstiften (se det andet billede).

Trin 7: Tilslut LED'en i brødbrættet

Tilslutning af LED'en i brødbrættet
Tilslutning af LED'en i brødbrættet
Tilslutning af LED'en i brødbrættet
Tilslutning af LED'en i brødbrættet

Sæt LED'en i brødbrættet. Indsæt et sort han- til han -jumperkabel i serie med LED'ens korte ledning. Tilslut derefter forskellige farvede han til mandlige jumperkabler i serie med LED'ens lange ledning.

Trin 8: Basys Board -forbindelser

Basys bordforbindelser
Basys bordforbindelser

Tilslut hunenderne på PIR -bevægelsessensoren til 5 volt spændingskilden på basiskortet. Tilslut derefter den mandlige LED -jordledning til sideportens jord, derefter alarmtråden fra PIR -bevægelsessensoren og derefter LED -indgangskablet (som vist på billedet).

Anbefalede: