Fantastic. It was very good to see just enough detail so that it wasn't overloading my brain. The timing wave diagrams made everything so clear especially the modes. Thank you.
Nice Demo of the programming side. A few notes though: 1.) The AVR hardware SPI "SS" pin is used to turn the AVR into a slave device on a bus. Use any other available I/O pin for Selecting peripheral hardware on the SPI bus. 2.) While I haven't played with the DS3234, I have been goofing around with the DS3231 as I have found them for a good bit cheaper. These RTC's are the best because they are temperature compensated. IIRC There is a small heating element inside the IC that keeps the temperature a few degrees above ambient. The cool part about this is that there is a temperature sensor built into the chip. This temperature sensor reading is available too! There are several different libraries available on the Arduino IDE Lib-Manager that make the temp reading available. I forget which one I used to get the temperature reading working, and I'm not in my main comp ATM, but it does work using one of them. 3.) Temperature compensation makes these RTC's much better than the cheaper DS1302 (which was only designed for charging NiCd batteries with a cheap timer), or the DS1307. These other chips are extremely common with Ardy1 tutorials, but they are really bad at keeping time long term. 4.) Anyone found a better deal on DS3231's or similar than $0.90 each (AliEx) for breakout boards in single/low quantities? I'm more interested in the chip itself instead of BO's but ATM it's cheaper for me to use a BO. -Jake PS On the off chance that Jeremy actually reads this. If you recall from your English classes, "Read" is one of the unusual words in English. Read in the present tense is pronounced like reed, but in the past tense is pronounced "red." It really doesn't matter. I couldn't care less if you change, but if I were on the other side of this, I would want to know ;)
GreatScott: *"Of course, you cannot use it for as many slave devices as the I square C protocol due to the limited number of chip select lines"* Me with more 74138 decoder chips than any sane human should have and no regard for compact design: *"I have no such weakness!"*
You have made the things I did not understand much clearer and I now do understand more than I ever have before. You are GREAT ! Thank you so much. I am looking forward to seeing more of your hard work. Also, I will be ordering some PCB's from your link.
The limitation of SPI is not the Chip select per module. It's the clock accepted by the slaves. That is what limits Clock speed. If you have multiple modules and one accepts say 10MHz and another only 100KHz --- you're stuck at 100KHz for all modules attached to that bus. There are many things missing from this video since it is very focused on the specific slave module in question. SPI also is made of 6 signals: MOSI -Master Out Slave in (master output) MISO - Master in slave out (slave module output master input) CLK - bus Clock. CS - Chip select, one per module attached to the master SPI. DC - Data/Command ---tells the slave module if theMaster is sending data or commands RST - Reset ... resets the slave module. In the limit one may be able to work with only 3 signals on the bus, MOSI or MISO, CLK, and DC, maybe even 2. For example there are simple displays modules that only receive data that only use MOSI and CLK. But the actual bus is made of those 6 signals.
0:25 dry skin, you should use moisturizing cream... Other than that, great video, as always ! You can also use SPI communication with 8bits shift registers like the 74HC595, that way you can extend the number of output pins if necessary
Great. Description on SPI! I have a number of projects that need SPI but I have been putting off. With this amount of detail I can finally try my hand at this useful protocol. Thanks for another great video! I always look forward to your next. ☑️😋
Protip: You can use a small cheap microcontroller like an attiny85 as a gpio expander to set the cs line on multiple spi devices high or low. Then you can just use i2c to tell the attiny85 which device you want to address and you only need to use your spi pins that you were using anyway and 2 pins for i2c on your main microcontroller to address all your spi devices. It is a little bit slower than using the pins on your main boy for chip select, but if you don't mind a switching latency of about 30 microseconds, then it works awesome.
I'm starting to think GreatScott! can read my mind. I was just searching how to use a SPI Display for my RaspberryPI and he does a video about it. Although he doesn't talk about a SPI Display it helped me to connect the Display anyway. Thank you!
You have such a great way of explaining things to sound so damn interesting. Some electronics channels on youtube with just background music and sped up video of someone building something obscure and kind of pointless is like a night and day difference when a GS video comes along! May I suggest you look into more RC stuff? Like SBUS/IBUS protocols and how those protocols manage to have such low latency but most importantly how they talk to the flight controller and maybe prototype some sort of simple 5 channel tx/rx with arduino! OR Maybe I'm just overzealous :D
OKAY fine Scott I give in! After years of seeing your videos everywhere I just have to know......please tell me which pens and highlighters you are using, they seem to work so well! :D. Thanks for the good videos man
You sure can, and its the simplest way if you want to do it serially. I2C is actually quite slow, SMBus on the other hand can do the job faster, but is still slower then SPI (I2C=100kHz+addressing overhead, SMBus=400kHz+addressing overhead, SPI=+1MHZ+little overhead). SPI is basically automated shiftregister bitbanging, and can get damn fast if used properly, and its way simpler then I2C and SMBus. But its rather limited and if you use alot of SPI devices (masters and slaves), you will end up with alot of wires, less then with parallel connections, but way more compared to the likes of I2C and SMBus including UART variants (LIN protocol comes to mind). This is from my experience with programming in assembler for atleast 3 MSP430 chips (MSP430G2553, MSP430FR4133, MSP430FR6989). Never look one way, seek out multiple alternatives, then you can find your answer easier.
@@Loundre3 yeah, but for displaying something the i2c speed is enough, you can use more i2c devices before being limited by the speed, (10,12bit adc, temperature sensors etc)
That is true, but Ankit is asking how to create a option for serial communication for the 16x2 LCD display. For that, he needs a IO extention chip (the 74HC595 is one for outputs). For I2C, i suggest using the MCP23008. eu.mouser.com/ProductDetail/Microchip-Technology/MCP23008-E-P?qs=8FMarzwez060sofcCmNWdQ%3d%3d For SPI, the 74HC595 (outputs only) will do fine. Which chip do you suggest for use with that display for him from your point of view with I2C?
@@Loundre3 - The chip on the cheap and popular I2C backpack module is the PCF8574. On my Github you can find the Arduino library I made to reuse that module for other purposes (such as driving the Nokia LCD). For a demo see my channel.
You can get around the slave select limitation by using a decoder or a serial to parallel IC (coincidentally the serial to parallel can be communicated with using SPI).
Few notes here: You only need the SS/CS if you're actually using multiple SPI devices, otherwise you can just tie it to ground. Second, while you need more wires the connections are a lot simpler because you don't need to worry about nasty pull-ups. Thirdly, the SS can be both a con and a pro; just consider the case of two I2C devices using the same non-changeable address, you'd need a I2C multiplexer then. Fourthly the addressing in I2C poses a huge overhead and of course I2C is also only half duplex while SPI is full-duplex. There're a lots of things to like... NB: Standard fast-mode I2C operates at 400kHz...
It's been awhile since I was exploring a bunch of different LCD options and looking into their protocols, but IIRC I saw one or two that used chip select for an edge trigger for something. It was probably some other form of Serial communication and not actually SPI. At the time I was just trying to understand all the different options on an OSHW project....so I'm still pretty clueless. I just recall making a mental note that I still need to check a datasheet before assuming I can ground a Slave Select pin... Could be wrong tho ;) -Jake
Connecting the SS pin to GND is not always possible. Some ICs require the rising edge on the SS input to confirm the data transmission. Without the rising edge, the transmitted commands are simply ignored by the slave. -> Depends on which IC you use.
That, plus some SPI slaves have significantly higher power consumption while selected. On the other hand, at least selecting a slave prevents the MISO line from floating which might also increase power consumption.
@3:30; when using pinmode() to set an output the low state is default (all PORTx register power-up defaults are 0, or low). So that chip select line is driven low from the pinmode declaration, then driven high again at spi.begin. You can digitalWrite (cs, HIGH) before a pinmode() to ensure it is never driven low incidentally (or write a 1 directly to the PORTB register). To be fair, this is an omission of the Arduino pinmode() reference page that should note the default state.
Watching this makes me feel alot better knowing that people can learn more about serial protocols and have a easier time working with them (if the setup doesn't screw up, if working in ASM or C). Learnt myself a few new things, even if i used SPI before several times (never bothered looking up the concept of modes, since its faster for me to look up the datasheet and see the edge triggering and clock polarity setup of the ics). Keep en coming, GreatScott! Mind if you try handling RS-232 (basically UART with specific voltage levels acting as a COM port) and CAN bus (popular automobile bus system) basics in future videos?
at 6:15 I think that you’ve incorrectly identified CPOL = 0 and CPHA = 0 as Mode 0. This should be Mode 1. This is verified at 4:28 where the ds states that only Modes 1 & 3 are supported.
Would love if u can add an example how to use it at the other microcontroller, like ESP32 (which I currently need), etc. Overall this video give me a new knowledge about SPI communication. Thankss!! 👍
A decoder/demultiplexer may be used to easily handle 2^N devices with N pins. For example using 74HC4515 you may handle 16 spi devices with only 4 microcontroller pins.
The main problem with RTC clock (like DS3231) I had was daylight saving time, which causes timezones issue. So if your project is supposed to work less then half of year - then ok, otherwise you have to implement all timezones and calendar stuff...
Very well done on showing the way this com protocol works. I can see a uses for this for fine measurement reading or output logic then sent to an Arduino Nano or other small form factor Arduino that would use I2C to communicate with another Arduino platform.
hey Greatest Scott! , yeah i dont know any other Scott so in my book u r the Greatest Scott . Iam having some trouble with my washing machine ; its a fully automatic (it was ) until the ECU on it got fried . so i put in an arduino to do the confusing and it worked like a charm , thanks to your videos and lot of others..................... BUT me being an unqualified engineer and all decided " Its Working perfectely which means it is too simple it need more things so that something or the other will go WRONG" i should have listened to AvE "Dont fix it if it aint Broke" , i didint . so here iam i upgraded from a 4 relay module to an 8 realy added 2 pumps to dispense the soap and the after wash . i thinkits the power supply that is causing the problem .: previously it would blackout the arduino whan the realy energizied , so i put in 1000uF 6.3V Cap in parallel to the relay module supply . seems to work ; but ima having trouble sometimes . so should i change the PS unit or stick in more caps ? or could it be seomthing else ? BTW how do i isolate the relay module powersupply ? is there something like a small module that can do that ? like an optocoupler that can transfer power ? a module that has all the isolation transformers and stuff built in ?
Happy new year everyone (I'm posting this new years eve 2019). Are there any maker geeks out there planning to do a "projects we lost in 2018" in memoriam video?
Unexpected way to write binary integer literals (and correct according to Arduino docs). The C++ standard includes binary literals as of C++17, but written 0b or 0B, and I think they were rejected from C11. Is this an avr-g++ extension?
I love the way you explain things, I think it would be awesome if you made a video on CAN as well. I know Arduino does not support it but its another one of those things that seems quite widely used and mysteriously enough there is no good videos about it :/ Keep up the good work :)
Nice little project including a nice introduction to SPI! However, please note, that at approx. 5:00, the shown MISO and MOSI signals are "non-typical". They usually change only once for every SCLK period (rising+falling edge), i.e., have (at most) half of the frequency ("NRZ"). You have shown it with going back to 0 after every bit (RZ), which is not as typical SPI implementations work. Disclaimer: It would still work that way, but it is "non-typical", hence my wording above.
Nobody mentioned it in the comments, but I've heard you can daisy-chain SPI devices and keep a single CS line this way. If somebody can remind everyone how it works, that would be awesome!
The only time I've seen that is when (ab)using the SPI interface to drive a series of shift registers. I can't imagine any other scenarios when you would connect multiple SPI slaves to the same CS line (but interested to know if there are any).
Don't take the word "abuse" too literally in this context. It's just that often this does not seem like an intended use. As evidenced by the fact that some uCs require shall we say "creative" config register settings to achieve it.
I read an Appnote from Maxim, which describes the daisy-chain method: www.maximintegrated.com/en/app-notes/index.mvp/id/3947 Yeah, you can read/write from each one individually, provided they expect only one byte read/written.
I only understood a little of that but one day I’m sure it will mean more to me. Just trying to get an SD card to read/write on a TFT that came with zero instructions how to plug in the SD side. I’m glad u ended with a shot of the SD card but wish I could’ve seen how it was attached to the bus and arduino Bc that’s the photo I need.
I bought an SD shield from...can't remember where, mabye amazon. And it can accept full sized or mirco size with an adapter sent along to. Its really simple to get started using an arduino. (I used an arduino mega because of the abundance of dedicated communication pins)
Fantastic! 😃 Can I make a suggestion? Try some LoRa modules. It's a long range communications module and 2 of the most popular long range rc modules (TBS Crossfire and FrSky R9) are based in its chipset. 😉
the full routine is: the CS pin is made low (commence). then 8 bit data is sent through the SPI library in hexadecimal format.meanwhile the clock pin sends a clock signal to sync the data. after u finish the transfer, CS is pulled high,stopping the bus.
Fantastic. It was very good to see just enough detail so that it wasn't overloading my brain. The timing wave diagrams made everything so clear especially the modes. Thank you.
I learned somthing new about spi
@@parisgr i am thinking the same think wtf !!?
You guys should support the channel - Patreon!
@@parisgr how !?
Nice Demo of the programming side.
A few notes though:
1.) The AVR hardware SPI "SS" pin is used to turn the AVR into a slave device on a bus. Use any other available I/O pin for Selecting peripheral hardware on the SPI bus.
2.) While I haven't played with the DS3234, I have been goofing around with the DS3231 as I have found them for a good bit cheaper. These RTC's are the best because they are temperature compensated. IIRC There is a small heating element inside the IC that keeps the temperature a few degrees above ambient. The cool part about this is that there is a temperature sensor built into the chip. This temperature sensor reading is available too! There are several different libraries available on the Arduino IDE Lib-Manager that make the temp reading available. I forget which one I used to get the temperature reading working, and I'm not in my main comp ATM, but it does work using one of them.
3.) Temperature compensation makes these RTC's much better than the cheaper DS1302 (which was only designed for charging NiCd batteries with a cheap timer), or the DS1307. These other chips are extremely common with Ardy1 tutorials, but they are really bad at keeping time long term.
4.) Anyone found a better deal on DS3231's or similar than $0.90 each (AliEx) for breakout boards in single/low quantities? I'm more interested in the chip itself instead of BO's but ATM it's cheaper for me to use a BO.
-Jake
PS On the off chance that Jeremy actually reads this. If you recall from your English classes, "Read" is one of the unusual words in English. Read in the present tense is pronounced like reed, but in the past tense is pronounced "red." It really doesn't matter. I couldn't care less if you change, but if I were on the other side of this, I would want to know ;)
Great info about the chip and thanks for sharing it.
The 3231 has the calendar, alarm and square wave output, too.
Commonly used on Raspberry Pis
I was intending to let him know about the pronunciation of "read", glad I don't have to :)
thank you so much person
That's incredible, everytime I discover a new thing needed for my project, you got a video about the subject :)
GreatScott: *"Of course, you cannot use it for as many slave devices as the I square C protocol due to the limited number of chip select lines"*
Me with more 74138 decoder chips than any sane human should have and no regard for compact design: *"I have no such weakness!"*
You have made the things I did not understand much clearer and I now do understand more than I ever have before. You are GREAT ! Thank you so much. I am looking forward to seeing more of your hard work. Also, I will be ordering some PCB's from your link.
Nicely done Scott, thank you again for your dedication and time spent to share your knowledges, best wishes from Spain 🇪🇸
Hi
Really you are doing very good job. You are inspiring many minds to be creative. As always stay creative. Thank you Scott
Please never stop making videos
The limitation of SPI is not the Chip select per module. It's the clock accepted by the slaves. That is what limits Clock speed. If you have multiple modules and one accepts say 10MHz and another only 100KHz --- you're stuck at 100KHz for all modules attached to that bus.
There are many things missing from this video since it is very focused on the specific slave module in question.
SPI also is made of 6 signals:
MOSI -Master Out Slave in (master output)
MISO - Master in slave out (slave module output master input)
CLK - bus Clock.
CS - Chip select, one per module attached to the master SPI.
DC - Data/Command ---tells the slave module if theMaster is sending data or commands
RST - Reset ... resets the slave module.
In the limit one may be able to work with only 3 signals on the bus, MOSI or MISO, CLK, and DC, maybe even 2.
For example there are simple displays modules that only receive data that only use MOSI and CLK.
But the actual bus is made of those 6 signals.
0:25 dry skin, you should use moisturizing cream...
Other than that, great video, as always !
You can also use SPI communication with 8bits shift registers like the 74HC595, that way you can extend the number of output pins if necessary
"the datasheet spoiled the surprise"
I just love your humor!
And I don't know though Arduino was difficult already.
I should have studied more in High school 45 years ago.
You are scary smart. Thanks Bob
Great. Description on SPI! I have a number of projects that need SPI but I have been putting off. With this amount of detail I can finally try my hand at this useful protocol. Thanks for another great video! I always look forward to your next. ☑️😋
Thanks GreatScott! This video helps me a lot to understand how spi works. As always your videos are awesome...
Basics !!! This is super hit. I am equipped with writing library for SPI devices...lol....
Protip: You can use a small cheap microcontroller like an attiny85 as a gpio expander to set the cs line on multiple spi devices high or low. Then you can just use i2c to tell the attiny85 which device you want to address and you only need to use your spi pins that you were using anyway and 2 pins for i2c on your main microcontroller to address all your spi devices. It is a little bit slower than using the pins on your main boy for chip select, but if you don't mind a switching latency of about 30 microseconds, then it works awesome.
I'm starting to think GreatScott! can read my mind. I was just searching how to use a SPI Display for my RaspberryPI and he does a video about it. Although he doesn't talk about a SPI Display it helped me to connect the Display anyway. Thank you!
You're welcome
scott loved your video.
you made such a vast topic soo easy.
Thank you for another great video. I learn something new every time I watch one of your videos.
Super high quality explanation. Clear and concise. I loved the way you presented.
You have such a great way of explaining things to sound so damn interesting. Some electronics channels on youtube with just background music and sped up video of someone building something obscure and kind of pointless is like a night and day difference when a GS video comes along! May I suggest you look into more RC stuff? Like SBUS/IBUS protocols and how those protocols manage to have such low latency but most importantly how they talk to the flight controller and maybe prototype some sort of simple 5 channel tx/rx with arduino! OR Maybe I'm just overzealous :D
Fun fact: SD cards are SPI devices all by themselves, the SD breakout boards just provide some filtering and logic level conversions.
Gosh I love these videos but it's always the programming that holds me up. More videos on programming please!!
One thing i have noticed is Great scott and Electronoobs uploads their videos one after the other on the same day
Finally got it on sunday .
Waited for your video every week .
Thanks for watching :-)
Wow, that was really comprehensive. I’ll definitely use this as a reference!
I love these types of videos
Excellent video. You just came right in time, as I started playing with SPI devices recently. Thanks to you, all is much clearer now :)
You are really great, good voice and subject is clear
sir in India 5 th sem is celebrated as teachers day.
so happy teachers day.
as u become my greatest learning source .thanks
scott, you're one of my heros, i learned so much from your videos.
Glad you like them
1:55 just have to say, great soldering
OKAY fine Scott I give in! After years of seeing your videos everywhere I just have to know......please tell me which pens and highlighters you are using, they seem to work so well! :D. Thanks for the good videos man
Stabilo point 88😉
A decoder/demultiplexer can be used for CS or /CS duties and free up pins on the micro.
You can communicate to 16x2 LCD using only three wires by spi shift register ic which is 74h595!
There is no point in using SPI since it's a low speed peripheral, you can use the i2c
You sure can, and its the simplest way if you want to do it serially. I2C is actually quite slow, SMBus on the other hand can do the job faster, but is still slower then SPI (I2C=100kHz+addressing overhead, SMBus=400kHz+addressing overhead, SPI=+1MHZ+little overhead).
SPI is basically automated shiftregister bitbanging, and can get damn fast if used properly, and its way simpler then I2C and SMBus. But its rather limited and if you use alot of SPI devices (masters and slaves), you will end up with alot of wires, less then with parallel connections, but way more compared to the likes of I2C and SMBus including UART variants (LIN protocol comes to mind).
This is from my experience with programming in assembler for atleast 3 MSP430 chips (MSP430G2553, MSP430FR4133, MSP430FR6989). Never look one way, seek out multiple alternatives, then you can find your answer easier.
@@Loundre3 yeah, but for displaying something the i2c speed is enough, you can use more i2c devices before being limited by the speed, (10,12bit adc, temperature sensors etc)
That is true, but Ankit is asking how to create a option for serial communication for the 16x2 LCD display. For that, he needs a IO extention chip (the 74HC595 is one for outputs). For I2C, i suggest using the MCP23008.
eu.mouser.com/ProductDetail/Microchip-Technology/MCP23008-E-P?qs=8FMarzwez060sofcCmNWdQ%3d%3d
For SPI, the 74HC595 (outputs only) will do fine.
Which chip do you suggest for use with that display for him from your point of view with I2C?
@@Loundre3 - The chip on the cheap and popular I2C backpack module is the PCF8574. On my Github you can find the Arduino library I made to reuse that module for other purposes (such as driving the Nokia LCD). For a demo see my channel.
You can get around the slave select limitation by using a decoder or a serial to parallel IC (coincidentally the serial to parallel can be communicated with using SPI).
Efforts in your videos are 10/10. Always worth the 7 day wait.
Also a request. Can you do a DIY or BUY for a solar charge controller?
It is on my to do list
Few notes here: You only need the SS/CS if you're actually using multiple SPI devices, otherwise you can just tie it to ground. Second, while you need more wires the connections are a lot simpler because you don't need to worry about nasty pull-ups. Thirdly, the SS can be both a con and a pro; just consider the case of two I2C devices using the same non-changeable address, you'd need a I2C multiplexer then. Fourthly the addressing in I2C poses a huge overhead and of course I2C is also only half duplex while SPI is full-duplex. There're a lots of things to like... NB: Standard fast-mode I2C operates at 400kHz...
It's been awhile since I was exploring a bunch of different LCD options and looking into their protocols, but IIRC I saw one or two that used chip select for an edge trigger for something. It was probably some other form of Serial communication and not actually SPI.
At the time I was just trying to understand all the different options on an OSHW project....so I'm still pretty clueless. I just recall making a mental note that I still need to check a datasheet before assuming I can ground a Slave Select pin... Could be wrong tho ;)
-Jake
Connecting the SS pin to GND is not always possible. Some ICs require the rising edge on the SS input to confirm the data transmission. Without the rising edge, the transmitted commands are simply ignored by the slave.
-> Depends on which IC you use.
That, plus some SPI slaves have significantly higher power consumption while selected. On the other hand, at least selecting a slave prevents the MISO line from floating which might also increase power consumption.
Love the detail you when into!! More videos like this please!!! Love your videos !!
I wait for your video.....every Sunday...
I hope they are worth the wait.
@3:30; when using pinmode() to set an output the low state is default (all PORTx register power-up defaults are 0, or low). So that chip select line is driven low from the pinmode declaration, then driven high again at spi.begin. You can digitalWrite (cs, HIGH) before a pinmode() to ensure it is never driven low incidentally (or write a 1 directly to the PORTB register). To be fair, this is an omission of the Arduino pinmode() reference page that should note the default state.
Watching this makes me feel alot better knowing that people can learn more about serial protocols and have a easier time working with them (if the setup doesn't screw up, if working in ASM or C). Learnt myself a few new things, even if i used SPI before several times (never bothered looking up the concept of modes, since its faster for me to look up the datasheet and see the edge triggering and clock polarity setup of the ics). Keep en coming, GreatScott!
Mind if you try handling RS-232 (basically UART with specific voltage levels acting as a COM port) and CAN bus (popular automobile bus system) basics in future videos?
Quality contents, should be mandatory to view before any other video ;)
Thank you for the jlcpcb Site. This is just amazing
You're welcome
at 6:15 I think that you’ve incorrectly identified CPOL = 0 and CPHA = 0 as Mode 0. This should be Mode 1.
This is verified at 4:28 where the ds states that only Modes 1 & 3 are supported.
Would love if u can add an example how to use it at the other microcontroller, like ESP32 (which I currently need), etc. Overall this video give me a new knowledge about SPI communication. Thankss!! 👍
Awesome....!!! SPI register explanation super....looking forward to see many videos on basics....👍👍
A decoder/demultiplexer may be used to easily handle 2^N devices with N pins. For example using 74HC4515 you may handle 16 spi devices with only 4 microcontroller pins.
Please do a video on i2c communication and one wire communication
Great video! Thank you for sharing!
Great led cube intro, make it bass boost
The main problem with RTC clock (like DS3231) I had was daylight saving time, which causes timezones issue. So if your project is supposed to work less then half of year - then ok, otherwise you have to implement all timezones and calendar stuff...
Thank you for this one!!
I think you could do a whole series of I2C and SPI examples like a cookbook.
many, probably most SPI devices allow chaining, similar to the way shift registers work. then you don't have to worry about lack of CS pins.
When selecting a part, always check the interface and what libraries exist. You may decide to use a different part!
Very well done on showing the way this com protocol works. I can see a uses for this for fine measurement reading or output logic then sent to an Arduino Nano or other small form factor Arduino that would use I2C to communicate with another Arduino platform.
hey Greatest Scott! , yeah i dont know any other Scott so in my book u r the Greatest Scott .
Iam having some trouble with my washing machine ;
its a fully automatic (it was ) until the ECU on it got fried . so i put in an arduino to do the confusing and it worked like a charm , thanks to your videos and lot of others.....................
BUT me being an unqualified engineer and all decided " Its Working perfectely which means it is too simple it need more things so that something or the other will go WRONG"
i should have listened to AvE "Dont fix it if it aint Broke" , i didint . so here iam
i upgraded from a 4 relay module to an 8 realy
added 2 pumps to dispense the soap and the after wash .
i thinkits the power supply that is causing the problem .: previously it would blackout the arduino whan the realy energizied , so i put in 1000uF 6.3V
Cap in parallel to the relay module supply . seems to work ; but ima having trouble sometimes .
so should i change the PS unit or stick in more caps ?
or could it be seomthing else ?
BTW how do i isolate the relay module powersupply ? is there something like a small module that can do that ? like an optocoupler that can transfer power ?
a module that has all the isolation transformers and stuff built in ?
Great Scott,u r always great!!.What an explanation sirji!!🙇😇
Happy new year everyone (I'm posting this new years eve 2019). Are there any maker geeks out there planning to do a "projects we lost in 2018" in memoriam video?
Fantastic video
Cheers great video I'm going back to watch i2c .
You should try making a wind turbine btw love your videos
"Since the datasheet spoiled the surprise" lol
Nice and Informative session. Thanks
Thank you so much. you have simplified the details so much :)
Your videos are interesting
this video is really helpful....
Would have loved it if you showed the frame rate difference between the two interfaces on the same/similar display!
good presentation
Always with the best.
Unexpected way to write binary integer literals (and correct according to Arduino docs). The C++ standard includes binary literals as of C++17, but written 0b or 0B, and I think they were rejected from C11. Is this an avr-g++ extension?
I love the way you explain things, I think it would be awesome if you made a video on CAN as well. I know Arduino does not support it but its another one of those things that seems quite widely used and mysteriously enough there is no good videos about it :/ Keep up the good work :)
You could use shift registers or a demultiplexer for the chip select.
Yep. See my GitHub for an example of doing just this with shift registers: sembazuru.github.io/SPI-shift-register-CS/
Very nice video sir.
Useful video
shift register is the magic ic! and then you can use as many cs as you want ;)
Awesome video, thanks!
Thank you for this video!
4:40 Explanation of different modes of the SPI
Nice little project including a nice introduction to SPI! However, please note, that at approx. 5:00, the shown MISO and MOSI signals are "non-typical". They usually change only once for every SCLK period (rising+falling edge), i.e., have (at most) half of the frequency ("NRZ"). You have shown it with going back to 0 after every bit (RZ), which is not as typical SPI implementations work. Disclaimer: It would still work that way, but it is "non-typical", hence my wording above.
Sure but it is easier to understand that way
IMHO its rather adding another point of confusion, but I don't want to argue. :-) Keep up the good work.
Love your videos!
Oh Also EasyEDA is totally awesome. I found it 6 months ago and love it. I switched from KiCad
When you finally learn I2C: "YES I CAN PROGRAM ALLL THE THINGS!!"
SPI: *blocks your path* 😤
Nobody mentioned it in the comments, but I've heard you can daisy-chain SPI devices and keep a single CS line this way. If somebody can remind everyone how it works, that would be awesome!
This will only work if your SPI devices don't try to talk back to the µP, and you want all of them to receive the same commands.
The only time I've seen that is when (ab)using the SPI interface to drive a series of shift registers. I can't imagine any other scenarios when you would connect multiple SPI slaves to the same CS line (but interested to know if there are any).
@@jvqn6581 why do u consider that abusing it??
Don't take the word "abuse" too literally in this context. It's just that often this does not seem like an intended use. As evidenced by the fact that some uCs require shall we say "creative" config register settings to achieve it.
I read an Appnote from Maxim, which describes the daisy-chain method:
www.maximintegrated.com/en/app-notes/index.mvp/id/3947
Yeah, you can read/write from each one individually, provided they expect only one byte read/written.
Please also make videos for RS232, RS485,USB, & ETHERNET protocols.
On my to do list
Great video!
Great great great explanations, thank you!
I just loved this.
Bro can you do a video on aurduino parallel communication
Well explained! Thanks!!
I only understood a little of that but one day I’m sure it will mean more to me. Just trying to get an SD card to read/write on a TFT that came with zero instructions how to plug in the SD side. I’m glad u ended with a shot of the SD card but wish I could’ve seen how it was attached to the bus and arduino Bc that’s the photo I need.
I bought an SD shield from...can't remember where, mabye amazon. And it can accept full sized or mirco size with an adapter sent along to. Its really simple to get started using an arduino. (I used an arduino mega because of the abundance of dedicated communication pins)
Why don't you make a video for USART and put it with SPI and I2C in one playlist? Your videos are AWESOME!
Great tutorial, very understandable. Which Oscilloscope are you using?
THANKS BRO JUST NEEDED THIS VIDEO!!!!! 👌👌👌👌👌👌👌
Awesome!
Nice info, thanks :)
it was an amazing video! thanks!
Please increase the frequency of uploading the new videos. ...I always wait for them.
One video takes 30-60 hours to produce. You can figure out the rest.
Fantastic! 😃
Can I make a suggestion? Try some LoRa modules. It's a long range communications module and 2 of the most popular long range rc modules (TBS Crossfire and FrSky R9) are based in its chipset. 😉
so by my understanding, low is like a "get ready" and high is a "commence"?
the full routine is:
the CS pin is made low (commence).
then 8 bit data is sent through the SPI library in hexadecimal format.meanwhile the clock pin sends a clock signal to sync the data. after u finish the transfer, CS is pulled high,stopping the bus.
Nice video
Well for selecting slaves you could allow use a demux ic. That you can control a lage amount of slaves.
good job man!